【问题标题】:How can we separate route of admin and user?我们如何分离管理员和用户的路线?
【发布时间】:2020-08-27 18:37:18
【问题描述】:

我正在 node js 中创建路线。我正在为仪表板创建路线。

  1. 用户登录并获取JWT token
  2. 通过发送Token,用户可以访问一些与用户相关的路由(编辑、删除、注销路由等)。
  3. 但是对于管理员,我想创建可以查看用户列表的路由,编辑或删除用户,检查用户的注销时间。我还在表中设置了标志来识别这个人是用户还是管理员。

如何验证后端管理员的路由?

【问题讨论】:

    标签: javascript node.js reactjs mongodb express


    【解决方案1】:

    你可以从这个逻辑中得到启发,这里无法给出进一步的解释。按照步骤操作(可能会有所帮助):

    首先)role 字段定义到DB mongoDBMysql(例如):

    enum: ['user', 'admin']
    

    第二)创建一个函数checkRole(role)登录后检查角色并验证jwt,然后获取用户

    第三)为管理面板创建单独的路由(例如):

    router.route('/admin-panel').use(authController.checkRole('admin'))
    

    【讨论】:

    • 但是是什么阻止了user 变成admin ?普通用户也可以选择自己成为管理员。
    【解决方案2】:

    您可以将您的授权标志放在您的 JWT 中。当用户登录时,您的服务器会生成相应的 JWT,其中包含身份验证信息(即userId)。您可以在令牌中添加额外的授权信息(即auth)。

    根据auth 字段,您的服务器可以识别请求是由普通用户还是管理员发送的。当然,保护 JWT 免受劫持是另一回事。

    【讨论】:

    • 您的意思是实现基本身份验证。发送带有请求的标头。从前端发送(Authname 和密码)。安全吗?
    • 用于存储 jwt 。我使用的是 http cookie。安全吗?
    • @Sharadkumar 这些帖子 - 12 讨论 JWT / Auth 令牌的安全存储。
    • @Sharadkumar 说到以纯文本形式发送密码,你应该通过 HTTPS 连接。
    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    相关资源
    最近更新 更多