如何区分api中的管理员和用户

时间:2017-05-15 11:07:41

标签: javascript node.js express

我使用快速框架,让我说我在API中有这一行:

router.delete('/user',(req, res) => { //deleting...}

现在我希望只有管理员才能访问此行。

在其余代码中,只有用户可以访问的行如下:

router.put('/post')

只有管理员可以访问的行如下:

router.put('/killDB)

能够帮助我区分两者的最佳方式(代币,会话或类似的东西)是什么?

2 个答案:

答案 0 :(得分:0)

使用密码对用户进行身份验证,然后检查用户是否为管理员。然后只需在您的路线中添加密码逻辑。下面我将提供我的代码,我只是检查用户是否已登录(这对我来说已足够)

router.get('/delete', isLoggedIn, function (req, res) {
Page.collection.drop();
var page = new Page();
page.save(function (err) {
    if(err) throw err;
    res.redirect('/admin');
    });
});

// render login form
router.get('/login', function (req, res) {
   res.render('login',{ message: req.flash('error'), layout: null});
});

// process the login form
router.post('/login', passport.authenticate('local-login', {
    successRedirect : '/admin', // redirect to the secure profile section
    failureRedirect : '/login', // redirect back to the signup page if there is an error
    failureFlash : true // allow flash messages
}));

router.get('/logout', function(req, res) {
    req.logout();
    res.redirect('/');
});

function isLoggedIn(req, res, next) {

    // if user is authenticated in the session, carry on
if (req.isAuthenticated())
    return next();

// if they aren't redirect them to the home page
res.redirect('/');
}

答案 1 :(得分:0)

您可以使用连接角色包来授权您的用户,然后将其路由到允许他们访问的URL。

您也可以选择 passport.js ,但它更像是身份验证包,其中连接角色只是针对性at仅提供“授权”部分。这个包适用于Express。

实施此软件包后,您可以使用“role”属性检查用户的授权级别,并允许他们执行各自的操作。

例如,

if (req.user.role === 'admin')  {
   router.put('/killDB)
}

您可以在此处查看该套餐:https://www.npmjs.com/package/connect-roles

希望这有帮助!

相关问题