유저가 어떠한 웹 사이트에 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가 뜬다.
여러 할일 들을 추가 한 후
프로그램을 종료 하고 다시 들어 가도 그대로 데이터는 남아 있다.
세션을 분리했기 때문에 다른 아이디로 로그인 했을 경우엔 저장되어 있던 데이터는 나오지 않는다.