nodejs中的管理员用户角色

问题描述 投票:0回答:2

我的网络应用程序需要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路由?

node.js permissions mongoose roles
2个回答
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;
    }
};

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

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

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

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

0
投票

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

app.get('/admin-page', isAdmin, function(req, res) {
    res.render('admin', {         //'admin' is your admin template
        user : req.user 
       // or any other data you want to render! 
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.