我正在用Node JS后端和Angular 6前端构建应用程序。
我实现了JWT的注册/登录。现在,我想添加角色来保护我的路线(用户,教练,管理员),最好的方法是什么? 一个用户可以具有多个角色(例如,管理员+教练)。
这是我用来检查auth的中间件:
const jwt = require('jsonwebtoken')
module.exports = (req, res, next) => {
try {
const token = req.headers.authorization.split(' ')[1];
const decodedToken = jwt.verify(token, process.env.JWT_SECRET);
req.userData = {
email: decodedToken.email,
userId: decodedToken.user_id
}
next()
} catch (error) {
res.status(401).json({
message: 'You're not authenticated.'
})
}
}
这是我在用户登录时创建令牌的方式:
const token = jwt.sign({
email: fetchedUser.email,
userId: fetchedUser.id
}, process.env.JWT_SECRET, {
expiresIn: '1h'
})
我曾考虑过在用户登录时通过令牌添加角色。但是,如何处理Angular呢?并通过其他中间件保护某些路由
示例:
router.get('/:coachId', checkAuth, ***<!>hasRoles('Admin')<!>***, coachCtrl.getCoach);
除了check-auth之外,我还想添加另一个处理检查角色的中间件。
谢谢您的帮助。