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() } }