You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express站点adminProfile路由普通用户可直接越权访问故障排查

问题原因

你当前仅在前端视图层控制了Admin按钮的显示,路由层只校验了用户是否登录,没有对访问者的管理员身份做校验,所以任何登录用户都可以直接通过地址栏访问管理员路径。

修复方案

第一步:新增管理员权限校验中间件

在shopUsers-routes.js的路由定义前新增isAdmin中间件:

const isAdmin = (req, res, next) => {
  // 同时校验登录状态和管理员身份
  if (req.isAuthenticated() && req.user.email === "abodn70@hotmail.com") {
    return next();
  }
  // 非管理员跳转并提示无权限
  req.flash('error', '您无权限访问该页面');
  res.redirect('/'); // 此处可替换为你站点的实际首页路径
}

第二步:修改adminProfile路由的守卫逻辑

把原路由的isAuthenticated替换为新增的isAdmin中间件即可(isAdmin内部已包含登录校验,无需重复配置):

router.get('/adminProfile',  isAdmin, (req, res)=>{
    res.render('shopMembers/adminProfile', {
            success: req.flash('success')
    })
})

可选优化建议

  • 不要硬编码管理员邮箱在业务代码中,可以将管理员邮箱配置到.env环境变量中,后续修改无需调整业务逻辑
  • 如果后续有扩展多名管理员的需求,可以在SUser用户表中新增isAdmin布尔类型字段,校验逻辑调整为判断req.user.isAdmin即可,扩展性更强

内容的提问来源于stack exchange,提问作者user16588800

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:30:05