jdysya fbed496bed feat(gateway): 增加用户信息并在日志中记录
- 新增 getUserInfo 辅助函数以获取用户信息
- 更新 ServeIndex 和 ServeStatic 函数以使用数据库参数
- 修改 LogAccess 函数以记录用户信息
- 优化 AuthRequired 中间件,对登出操作进行特殊处理
2025-02-16 10:06:32 +08:00

33 lines
691 B
Go

package middleware
import (
"net/http"
"net/url"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
)
func AuthRequired() gin.HandlerFunc {
return func(c *gin.Context) {
session := sessions.Default(c)
user := session.Get("user")
if user == nil {
// 如果是登出路径,直接重定向到登录页面
if c.Request.URL.Path == "/logout" {
c.Redirect(http.StatusFound, "/login")
c.Abort()
return
}
// 对于其他路径,保留原有的return_url逻辑
returnURL := c.Request.URL.String()
encodedURL := url.QueryEscape(returnURL)
c.Redirect(http.StatusFound, "/login?return_url="+encodedURL)
c.Abort()
return
}
c.Next()
}
}