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가 뜬다.

여러 할일 들을 추가 한 후

프로그램을 종료 하고 다시 들어 가도 그대로 데이터는 남아 있다.

세션을 분리했기 때문에 다른 아이디로 로그인 했을 경우엔 저장되어 있던 데이터는 나오지 않는다.

좋은 웹페이지 즐겨찾기