Как получить Cookie MaxAge в Gin Golang?
У меня проблема с реализацией куки. Я создаю куки с помощью SetCookie() в контроллере. Когда пользователь использует адрес /, срабатывает middleware. В этом middleware я получаю куки из запроса пользователя с помощью функции Request.Cookie("session_id"). Я получаю значение этого куки, но не получаю другие поля, такие как MaxAge , Path и так далее.
controller.go
func (a *AuthorizedController) SignIn(c *gin.Context) {
c.SetCookie("session_id", uuid, 600, "/", "localhost", false, true)
c.Status(http.StatusOK)
}
middleware.go
func SessionMiddleware(repo *repostirories.Repositories) gin.HandlerFunc {
return func(c *gin.Context) {
cookie, err := c.Request.Cookie("session_id")
if err != nil || cookie.Value == "" {
c.Status(http.StatusUnauthorized)
c.Abort()
return
}
log.Println(cookie.MaxAge)
}
}
app.go
r.POST("/signin", controller.SignIn)
r.GET("/", middlewares.SessionMiddleware(repo), controller.Home)
log.Println(cookie.MaxAge) всегда выводит 0.
Ответы (1 шт):
С Gin не работал, но сталкивался с подобным в gorilla, там проблема было в том, что Request.Cookie("session_id")
получает только значение куки, но не все остальное, решением было использовать cookies := c.Request.Cookies()
, потом проходимся по cookies
и берем что нам нужно:
for _, cookie := range cookies {
if cookie.Name == "session_id" {
sessionID = cookie.Value
log.Println("MaxAge:", cookie.MaxAge)
log.Println("Path:", cookie.Path)
break
}
}
Возможно в Gin нужно делать так же