Go web 14. Login Page
세션 정보란?
유저가 어떠한 웹 사이트에 signin을 하게 되면 세션이 생기고 ID가 생긴다.
이때 얻은 세션 정보를 cookie에 집어 넣어 창이 바뀌었을때 로그인 여부 파악 할 수 있게 해준다.
하지만 쿠키에 세션정보를 넣는것은 해킹에 취약하다.
그러기 위해선 쿠키를 암호화 해야한다.
쿠키를 암호화 하는 패키지 고릴라 세션 다운 받기
go get github.com/gorilla/sessions
고릴라 세션 적용하기
Go web 9. OAuth2.0 에서 만들었던 구글 로그인 페이지를 web 13에 그대로 복사해서 진행한다.
ex) app.go에 전역변수 선언
<생략>
var store = sessions.NewCookieStore([]byte(os.Getenv("SESSION_KEY")))
// os 환경변수에서 SESSION_KEY 를 가져와 암호화한다.
<생략>
환경변수에 SESSION_KEY를 저장하기 위에 구글의 UUID(Universally Unique Identifier) 패키지를 이용하여 암호키를 만든다.
ex) UUID
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
id := uuid.New()
fmt.Println(id.String())
}
고릴라 세션 적용
https://github.com/jinzza456/go-todo-web
세션 ID별로 다른 데이터를 불러오기 위해선 세션별로 저장해줄 필요가 있다.
세션 분리 적용
https://github.com/jinzza456/go-todo-web/tree/develop
로그인 창에서 구글 로그인을 클릭
로그인
로그인을 완료하면 todo list가 뜬다.
여러 할일 들을 추가 한 후
프로그램을 종료 하고 다시 들어 가도 그대로 데이터는 남아 있다.
세션을 분리했기 때문에 다른 아이디로 로그인 했을 경우엔 저장되어 있던 데이터는 나오지 않는다.
Author And Source
이 문제에 관하여(Go web 14. Login Page), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jinzza456/Go-web-14.-Login-Page저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)