I have the following routes and the session setup:
func SetupRouter() *gin.Engine {
r := gin.Default()
// Session
store := cookie.NewStore([]byte("secret"))
// Set session expiration time
store.Options(sessions.Options{MaxAge: 3600 * 24}) // 24hr
r.Use(sessions.Sessions("mysession", store))
r.GET("api/business/", controllers.GetBusiness)
r.POST("api/business/login", controllers.Login)
r.GET("api/business/logout", controllers.Logout)
r.GET("api/business/session", controllers.GetBusinessSession)
r.POST(
"api/itemcategory/add",
// isBusinessAuth(),
controllers.CreateItemCategory,
)
r.POST(
"api/itemcategory/delete/:id",
// isBusinessAuth(),
controllers.DeleteItemCategory,
)
r.GET(
"api/itemcategory/all",
// isBusinessAuth(),
controllers.GetAllItemCategories,
)
r.POST(
"api/itemcategory/update/:id",
// isBusinessAuth(),
controllers.CreateItemCategory,
)
return r
}
the isBusinessAuth() function:
func isBusinessAuth() gin.HandlerFunc {
return func(c *gin.Context) {
if sessions.Default(c).Get("businessAuth") == 1 {
c.Next()
return
} else {
c.JSON(http.StatusUnauthorized, gin.H{"error": "You are not authorized!"})
}
c.Abort()
return
}
}
This is how session is placed, in the Login function:
// Set business session
session.Set("businessAuth", 1)
session.Save()
No matter what value has the session, isBusinessAuth() is returning "You are not authorized" for all the routes where is used. I tried to put it on "/api/business/login" and "/api/business/session" routes and there is working as expected. What am I missing?
Thank you :)