米哈尔·加利(Michal Gally)
我有一个MongoDB用户,每个用户都有一个属性user。用户可以注册,他们将获得默认的用户角色,但是在管理面板中,您可以创建其他管理员。问题是我不知道如何保护他人,而不仅仅是获得用于创建用户的POST路由,并且仅将角色属性设置为admin并将其发布为例如Insomnia。任何想法如何防止这种情况?
BG
我能想到的答案是使用JWT令牌。不知道如何使用passport.js来做到这一点,但是可以这样:
- 只有管理员用户才能在Web上创建管理员帐户(因为您不想使用默认用户帐户来创建它->仅向其他用户隐藏按钮/选项)
- 您可以将信息放入JWT令牌中(因此,您可以在JWT中添加admin-role以将管理请求与其他人分开,或者用户名已足够,您可以从令牌中获取用户名信息并从mongo中获取角色,然后检查用户的角色。)
- 只有管理员才能将JWT令牌与admin-role一起使用。(JWT令牌是在用户登录时创建的。您基本上将用户(刚刚登录的)信息隐藏在令牌中。)
- 放置一个没有JWT令牌(或没有管理员角色)的中间件不能进入next()的方法,否则返回403.如果让他们通过JWT令牌传递,则仅需控制用户的角色是否为admin在函数内部。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句