package middleware import ( "net/url" "path/filepath" "strings" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" ) func RouteAuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { requestPath := c.Request.URL.Path // 如果路径没有后缀(不是静态资源)或以斜杠结尾,且不在白名单中,需要认证 if filepath.Ext(requestPath) == "" || strings.HasSuffix(requestPath, "/") { session := sessions.Default(c) user := session.Get("user") if user == nil { returnURL := c.Request.URL.String() encodedURL := url.QueryEscape(returnURL) c.Redirect(302, "/login?return_url="+encodedURL) c.Abort() return } } c.Next() } }