language, framework, library/golang

[Golang] negroni session

떤뚜 2019. 5. 24. 09:34
import (
    /* ... */
    "github.com/codegangsta/negroni"
    sessions "github.com/goincremental/negroni-sessions"
    "github.com/goincremental/negroni-sessions/cookiestore"
)
const (
    sessionKey = "simple_session"
    sessionSecret = "simple_session_secret"
)

세션의 Key 그리고 세션의 secret을 지정해준다.

func main() {
   /* ... */
   n:= negroni.Classic()
   store := cookiestore.New([]byte(sessionSecret))
   n.Use(session.Sessions(sessionKey, store))
   /* ... */
}

store 생성하여 secret 지정 후, sessionKey값으로 미들웨어에 등록

const(
    currentUserKey = "oauth2_current_user" //세션에 저장되는 CurrentUser의 키
    sessionDuration = time.Hour //로그인 세션 유지 시간
)

type User struct {
    UID         string        `json:"uid"`
    Name        string         `json:"name"`
    Email         string         `json:"user"`
    AvatarURL     string         `json:"avatar_url"`
    Expired     time.Time     `json:"expired"`
}

func (u *User) Valid() bool {
    //현재 시간 기준으로 만료 시간 확인
    return u.Expired.Sub(time.Noew())>0
}

func (u *User) Refresh(){
    //만료 시간 시간 연장
    u.Expired = time.Now().Add(sessionDuration)
}

func GetCurrentUser(r +http.Request) *User {
    //세션에서 CurrentUser 정보를 가져옴
    s:= sessions.GetSession(r)
    if s.
}