2017-05-15 56 views
0

我用快递框架API用户区分开来,可以说我有这条线在API中:
如何管理员和

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

现在我想,只有一个管理员就可以访问这条线。

在代码的其余部分也有,只有用户可以访问像行:

router.put('/post') 

和生产线只有管理员可以访问诸如:

router.put('/killDB) 

什么是最好的方式(令牌,会话或类似的东西),这将能够帮助我区分两者之间的差异?

+3

我使用[Passport](http://passportjs.org/) – George

回答

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('/'); 
} 
0

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

您也可以选择passport.js,但它是多还是像验证包其中作为连接-角色只是旨在提供只有“授权”的一部分。这个软件包可以和Express一起使用。

一旦你实现了这个包,你可以使用“角色”属性来检查用户的授权级别并允许他们执行各自的操作。

对于例如,

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

您可以检查出这里的包:https://www.npmjs.com/package/connect-roles

希望这有助于!

相关问题