feat(router): add whitelist mechanism for http driver and auth plugin

- implement route whitelist registration and wildcard matching in RouterExtension
- add cookie store session fallback when Redis is disabled in driver_http
- actively register public auth endpoints to whitelist in auth plugin
- update user handlers to persist session and clear cookie on logout
- document router whitelist mechanism in AGENTS.md and new-api skill
This commit is contained in:
ryan
2026-08-29 11:39:13 +08:00
parent 53ae3007d0
commit e0f2309520
17 changed files with 411 additions and 32 deletions
+17 -2
View File
@@ -79,7 +79,9 @@ func Login(c *gin.Context) {
sess := sessions.Default(c)
sess.Set(contracts.AuthUserIDKey, user.ID)
sess.Set(contracts.AuthUserNameKey, user.Username)
_ = sess.Save()
if err := sess.Save(); err != nil {
logger.ErrorF(c.Request.Context(), "save session failed on login: %v", err)
}
c.JSON(http.StatusOK, response.OK(user))
}
@@ -107,14 +109,27 @@ func Register(c *gin.Context) {
return
}
sess := sessions.Default(c)
sess.Set(contracts.AuthUserIDKey, newUser.ID)
sess.Set(contracts.AuthUserNameKey, newUser.Username)
if err := sess.Save(); err != nil {
logger.ErrorF(c.Request.Context(), "save session failed on register: %v", err)
}
c.JSON(http.StatusOK, response.OK(newUser))
}
// Logout logs out the current session.
func Logout(c *gin.Context) {
sess := sessions.Default(c)
sess.Options(sessions.Options{
Path: "/",
MaxAge: -1,
})
sess.Clear()
_ = sess.Save()
if err := sess.Save(); err != nil {
logger.ErrorF(c.Request.Context(), "clear session failed on logout: %v", err)
}
c.JSON(http.StatusOK, response.OKNil())
}