我用快递框架API用户区分开来,可以说我有这条线在API中:
如何管理员和
router.delete('/user',(req, res) => { //deleting...}
现在我想,只有一个管理员就可以访问这条线。
在代码的其余部分也有,只有用户可以访问像行:
router.put('/post')
和生产线只有管理员可以访问诸如:
router.put('/killDB)
什么是最好的方式(令牌,会话或类似的东西),这将能够帮助我区分两者之间的差异?
我用快递框架API用户区分开来,可以说我有这条线在API中:
如何管理员和
router.delete('/user',(req, res) => { //deleting...}
现在我想,只有一个管理员就可以访问这条线。
在代码的其余部分也有,只有用户可以访问像行:
router.put('/post')
和生产线只有管理员可以访问诸如:
router.put('/killDB)
什么是最好的方式(令牌,会话或类似的东西),这将能够帮助我区分两者之间的差异?
使用密码对用户进行身份验证,然后检查用户是否为管理员。然后只需将密码逻辑添加到您的路线。下面我将为我的代码,我只是检查,如果用户登录(这是足以让我)
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('/');
}
可以使用连接-角色包授权用户,然后将其路由到这些他们被允许访问的URL。
您也可以选择passport.js,但它是多还是像验证包其中作为连接-角色只是旨在提供只有“授权”的一部分。这个软件包可以和Express一起使用。
一旦你实现了这个包,你可以使用“角色”属性来检查用户的授权级别并允许他们执行各自的操作。
对于例如,
if (req.user.role === 'admin') {
router.put('/killDB)
}
您可以检查出这里的包:https://www.npmjs.com/package/connect-roles
希望这有助于!
我使用[Passport](http://passportjs.org/) – George