jdysya b24dee2ef9 feat(auth): 实现首页路由的认证逻辑并优化静态资源服务
- 在客户端添加首页路由的认证逻辑,提高用户体验
- 优化静态资源服务配置,增强安全性
- 添加 URL 解析和保存功能,为后续的路由认证做准备
- 调整中间件顺序和配置,提升应用性能和安全性
2025-02-16 21:46:23 +08:00

32 lines
711 B
Go

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