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 { // 获取当前请求的完整URL returnURL := c.Request.URL.String() // URL编码处理,避免特殊字符造成问题 encodedURL := url.QueryEscape(returnURL) c.Redirect(http.StatusFound, "/login?return_url="+encodedURL) c.Abort() return } c.Next() } }