nodejs中的管理员用户角色

时间:2015-10-25 20:04:13

标签: node.js permissions mongoose roles

我的网络应用需要2个用户角色(用户和管理员)。我正在使用护照本地身份验证。

现在通过添加以下代码,我有2个角色,但管理员也可以访问用户路由。我必须手动到/ admin路由才能使用它的功能。

function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
    return next();
res.redirect('/login');
}

function isAdmin(req, res, next) {
if (req.isAuthenticated()) {
    if (req.user.local.role == "admin") {
        return next();
    }
}
res.redirect('/login');
}

现在我的问题是如何更改isAdmin功能,以便当我以管理员身份登录时,立即转到/ admin路由?

2 个答案:

答案 0 :(得分:1)

expressjs中的用户角色和访问权限。如果你想首先创建角色,然后在自己的应用程序上创建权限后,我们必须定义第一个角色,然后添加这些角色的权限

var acl = require('acl');
var mongoose = require('mongoose');
var config = require('./config');

acl = new acl(new acl.mongodbBackend(mongoose.connection.db, config.db.aclCollectionPrefix), { debug: function(string) { console.log(string); } });

module.exports = {
    init: function() {
        acl.addRoleParents('superAdmin', 'admin');
        acl.addRoleParents('admin', 'user');
        acl.allow([
            {
                roles: ['admin'],
                allows: [
                    {
                        resources: '/user/list',
                        permissions: 'get'
                    }
                ]
            },
            {
                roles: ['superAdmin'],
                allows: [
                    {
                        resources: '/admin/list',
                        permissions: 'get'
                    }
                ]
            }
        ]);
    },

    getAcl: function() {
        return acl;
    }
};

这里是我的 config 文件,它定义了我的mongo连接和acl前缀。在我们想要定义可能在这些路线上设置权限的路线之后。

这些行将添加到admin.js文件中

var acl = require('../authorization').getAcl();

// protected URLs
router.get('/list', acl.middleware(2, userController.getUserId), adminController.list.get);

答案 1 :(得分:0)

您无需更改" isAdmin"功能!使用这样的东西:

if else