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.
}