Meanjs:请求用户是否可以获得授权

时间:2015-05-15 15:55:25

标签: node.js security express meanjs

我用meanjs生成一个项目。 有一些为crud模块自动生成的授权功能。使用app / controllers / articles.server.controller.js中的文章示例,授权类似于:

exports.hasAuthorization = function(req, res, next) {
    if (req.article.user.id !== req.user.id) {
        return res.status(403).send('User is not authorized');
    }
    next();
};

我想添加用户角色,以便管理员或所有者可以编辑如下:

exports.hasAuthorization = function(req, res, next) {
    if (req.article.user.id !== req.user.id) {
        var isAdmin = false;
        for (var userRoleIndex in req.user.roles) {
            if ('admin' === req.user.roles[userRoleIndex]) {
                isAdmin = true;
            }
        }
        if (!isAdmin) {
            return res.status(403).send('User is not authorized');
        }
    }
    next();
};

问题1这是安全的吗?或者更好的问题是这有多安全?

问题2如果它不安全那么Meanjs的安全方法是什么? 我是否必须做这样的事情SO Question或已经内置的东西?

1 个答案:

答案 0 :(得分:1)

你不必在那个答案中做任何事情,因为(如果我记得很好的话)meanjs正在使用passportjs来处理那些东西。

如果我建议您,您可以从路由传递角色,因此您不会将管理员角色硬编码,并且此方法将更具可重用性。你可以这样使用它:

app.route('/articles/:id')
        .get(users.requiresLogin, users.hasAuthorization(['user']), articles.read)
        .delete(users.requiresLogin, users.hasAuthorization(['admin']), articles.delete);