- 新增 getUserInfo 辅助函数以获取用户信息 - 更新 ServeIndex 和 ServeStatic 函数以使用数据库参数 - 修改 LogAccess 函数以记录用户信息 - 优化 AuthRequired 中间件,对登出操作进行特殊处理
33 lines
691 B
Go
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()
|
|
}
|
|
}
|