问题描述
我正在建立一个具有三个主要用户角色的网站。管理员,患者或医生。我正在使用JWT令牌进行身份验证和授权,但是对于它来说是一个全新的领域,我不了解几件事。
用户登录时,将为他/她分配一个jwt有效负载,其中包含所有用户信息。根据此令牌返回的角色,我希望用户浏览相应的路线。但是,如何为后端和前端路由设置这些单独的约束?目前,我仅在后端路由中检查授权标头,如下所示:
router.get('/get-profile',(req,res) => {
header = req.headers['authorization'];
jwt.verify(header,'secretkey',(err,authorizedData) => {
if (err) {
//If error send Forbidden (403)
console.log('ERROR: Could not connect to the protected route');
}
else {
//Rest of the code...
}
})
})
以上内容仅应由例如admin用户访问。但是,如果用户以患者身份登录,则他/她还将设置一个授权标头,因此可以访问此路由。
在前端,我有:
const PrivateRoute = ({ component: Component,auth,...rest }) => (
<Route {...rest} render={(props) => (
auth.isAuthenticated
? <Component {...props} />
: <Redirect to='/login' />
)} />
)
此外,我正在使用上述组件来传递所有其他受保护的路由,但是上述方法还仅检查授权标头,而不是单个角色。任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)