fix: get session handler

This commit is contained in:
email 2022-02-05 17:04:23 +08:00
parent 6f8ab0f3ff
commit ef8034836c
2 changed files with 7 additions and 13 deletions

View File

@ -20,19 +20,15 @@ func getUserIdContextKey() string {
return userIdContextKey return userIdContextKey
} }
// Purpose of this cookie is to store the user's id.
func setUserSession(c echo.Context, user *api.User) error { func setUserSession(c echo.Context, user *api.User) error {
sess, err := session.Get("session", c) sess, _ := session.Get("session", c)
if err != nil {
return fmt.Errorf("failed to get session, err: %w", err)
}
sess.Options = &sessions.Options{ sess.Options = &sessions.Options{
Path: "/", Path: "/",
MaxAge: 1000 * 3600 * 24 * 30, MaxAge: 1000 * 3600 * 24 * 30,
HttpOnly: true, HttpOnly: true,
} }
sess.Values[userIdContextKey] = user.Id sess.Values[userIdContextKey] = user.Id
err = sess.Save(c.Request(), c.Response()) err := sess.Save(c.Request(), c.Response())
if err != nil { if err != nil {
return fmt.Errorf("failed to set session, err: %w", err) return fmt.Errorf("failed to set session, err: %w", err)
} }
@ -41,17 +37,14 @@ func setUserSession(c echo.Context, user *api.User) error {
} }
func removeUserSession(c echo.Context) error { func removeUserSession(c echo.Context) error {
sess, err := session.Get("session", c) sess, _ := session.Get("session", c)
if err != nil {
return fmt.Errorf("failed to get session, err: %w", err)
}
sess.Options = &sessions.Options{ sess.Options = &sessions.Options{
Path: "/", Path: "/",
MaxAge: 0, MaxAge: 0,
HttpOnly: true, HttpOnly: true,
} }
sess.Values[userIdContextKey] = nil sess.Values[userIdContextKey] = nil
err = sess.Save(c.Request(), c.Response()) err := sess.Save(c.Request(), c.Response())
if err != nil { if err != nil {
return fmt.Errorf("failed to set session, err: %w", err) return fmt.Errorf("failed to set session, err: %w", err)
} }
@ -59,7 +52,7 @@ func removeUserSession(c echo.Context) error {
return nil return nil
} }
// Use session in the initial version // Use session to store user.id.
func BasicAuthMiddleware(us api.UserService, next echo.HandlerFunc) echo.HandlerFunc { func BasicAuthMiddleware(us api.UserService, next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error { return func(c echo.Context) error {
// Skips auth // Skips auth

View File

@ -5,6 +5,7 @@ import (
"memos/api" "memos/api"
"time" "time"
"github.com/gorilla/securecookie"
"github.com/gorilla/sessions" "github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session" "github.com/labstack/echo-contrib/session"
"github.com/labstack/echo/v4" "github.com/labstack/echo/v4"
@ -45,7 +46,7 @@ func NewServer(port int) *Server {
HTML5: true, HTML5: true,
})) }))
e.Use(session.Middleware(sessions.NewCookieStore([]byte("just_memos")))) e.Use(session.Middleware(sessions.NewCookieStore([]byte(securecookie.GenerateRandomKey(16)))))
s := &Server{ s := &Server{
e: e, e: e,