向Node JS API + Angular 6添加角色管理

时间:2018-08-03 09:55:28

标签: node.js angular jwt

我正在用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之外,我还想添加另一个处理检查角色的中间件。

谢谢您的帮助。

0 个答案:

没有答案