Skip to content

Commit 8cfb170

Browse files
committed
Update.
1 parent 2ed43c0 commit 8cfb170

File tree

2 files changed

+25
-23
lines changed

2 files changed

+25
-23
lines changed

cmd/dashboard/controller/controller.go

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,20 +65,31 @@ func corsMiddleware(c *gin.Context) {
6565
}
6666

6767
// pprofAuthMiddleware pprof 认证中间件
68-
// 检查用户是否已登录且为管理员
68+
// 检查用户是否为管理员(需要在 mygin.Authorize 之后使用)
6969
func pprofAuthMiddleware() gin.HandlerFunc {
7070
return func(c *gin.Context) {
71-
// 检查用户是否已登录
72-
if user, exists := c.Get(model.CtxKeyAuthorizedUser); exists && user != nil {
73-
// 检查是否为管理员用户
74-
if u, ok := user.(*model.User); ok && u.SuperAdmin {
71+
// 从上下文获取用户信息(由 mygin.Authorize 设置)
72+
user, exists := c.Get(model.CtxKeyAuthorizedUser)
73+
74+
if !exists || user == nil {
75+
c.JSON(http.StatusForbidden, gin.H{
76+
"error": "需要登录才能访问性能分析工具",
77+
"code": 403,
78+
})
79+
c.Abort()
80+
return
81+
}
82+
83+
// 检查是否为管理员用户
84+
if u, ok := user.(*model.User); ok {
85+
if u.SuperAdmin {
7586
// 管理员用户,允许访问
7687
c.Next()
7788
return
7889
}
7990
}
8091

81-
// 用户未登录或非管理员,返回403
92+
// 非管理员用户,拒绝访问
8293
c.JSON(http.StatusForbidden, gin.H{
8394
"error": "需要管理员权限才能访问性能分析工具",
8495
"code": 403,
@@ -137,14 +148,16 @@ func ServeWeb(port uint) *http.Server {
137148

138149
if singleton.Conf.Debug {
139150
gin.SetMode(gin.DebugMode)
140-
// 为 pprof 添加完整的认证流程保护
151+
// 为 pprof 添加认证保护,只允许管理员访问
141152
pprofGroup := r.Group("/debug/pprof")
142-
// 首先使用标准认证中间件设置用户信息
143153
pprofGroup.Use(mygin.Authorize(mygin.AuthorizeOption{
144154
MemberOnly: true,
145-
AllowAPI: true, // 允许API Token访问
155+
AllowAPI: true,
156+
IsPage: false,
157+
Msg: "访问性能分析工具需要管理员权限",
158+
Btn: "点此登录",
159+
Redirect: "/login",
146160
}))
147-
// 然后使用 pprof 专用中间件检查管理员权限
148161
pprofGroup.Use(pprofAuthMiddleware())
149162
pprof.RouteRegister(pprofGroup, "")
150163
}

pkg/mygin/auth.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,10 @@ func Authorize(opt AuthorizeOption) func(*gin.Context) {
3737
Link: opt.Redirect,
3838
Btn: opt.Btn,
3939
}
40-
var isLogin bool
41-
42-
// 用户鉴权
40+
var isLogin bool // 用户鉴权
4341
token, _ := c.Cookie(singleton.Conf.Site.CookieName)
4442
token = strings.TrimSpace(token)
43+
4544
if token != "" {
4645
var u model.User
4746

@@ -56,7 +55,6 @@ func Authorize(opt AuthorizeOption) func(*gin.Context) {
5655
log.Printf("从 BadgerDB 查询用户失败: %v,将使用默认凭据", err)
5756
// 使用默认管理员账户进行测试
5857
if token == "admin" {
59-
log.Printf("使用默认管理员账户")
6058
u = model.User{
6159
Common: model.Common{ID: 1},
6260
Login: "admin",
@@ -66,38 +64,31 @@ func Authorize(opt AuthorizeOption) func(*gin.Context) {
6664
}
6765
} else {
6866
// 在内存中查找匹配token的用户
69-
// 移除频繁的认证日志输出,只在出错时输出
7067
for _, user := range users {
7168
if user != nil && user.Token == token {
7269
// 检查token是否过期
7370
if user.TokenExpired.After(time.Now()) {
7471
u = *user
7572
isLogin = true
76-
// 移除频繁的认证成功日志
7773
break
7874
}
79-
// 移除token过期的日志输出
8075
}
8176
}
8277

8378
// 如果没有找到有效用户,但token是admin,则使用默认管理员账户
8479
if !isLogin && token == "admin" {
85-
// 移除默认管理员账户的日志输出
8680
u = model.User{
8781
Common: model.Common{ID: 1},
8882
Login: "admin",
8983
SuperAdmin: true,
9084
}
9185
isLogin = true
9286
}
93-
94-
// 移除认证失败的频繁日志输出
9587
}
9688
} else {
9789
log.Printf("警告:BadgerDB未初始化,用户认证将失败")
9890
// 使用默认管理员账户
9991
if token == "admin" {
100-
log.Printf("使用默认管理员账户")
10192
u = model.User{
10293
Common: model.Common{ID: 1},
10394
Login: "admin",
@@ -117,7 +108,6 @@ func Authorize(opt AuthorizeOption) func(*gin.Context) {
117108
log.Printf("警告:SQLite未初始化,用户认证将失败")
118109
// 在调试模式下使用默认管理员账户
119110
if singleton.Conf.Debug && token == "admin" {
120-
log.Printf("调试模式:使用默认管理员账户")
121111
u = model.User{
122112
Common: model.Common{ID: 1},
123113
Login: "admin",
@@ -194,7 +184,6 @@ func Authorize(opt AuthorizeOption) func(*gin.Context) {
194184
}
195185
c.Set(model.CtxKeyAuthorizedUser, u)
196186
isLogin = true
197-
log.Printf("调试模式:自动授权访问路径 %s", path)
198187
}
199188
}
200189

0 commit comments

Comments
 (0)