【发布时间】:2018-05-31 12:11:29
【问题描述】:
在这里寻找一些指针。
我想创建一个带有登录表单的页面作为登录页面,当您登录时,您将被带到您自己的仪表板。但是,如果您以具有管理员权限的用户身份登录,他们将被带到管理仪表板。
实现这一目标的最佳方法是什么?只是有一些中间件来检查他们是否是管理员?
谢谢 里程
【问题讨论】:
标签: html node.js express passport.js passport-local
在这里寻找一些指针。
我想创建一个带有登录表单的页面作为登录页面,当您登录时,您将被带到您自己的仪表板。但是,如果您以具有管理员权限的用户身份登录,他们将被带到管理仪表板。
实现这一目标的最佳方法是什么?只是有一些中间件来检查他们是否是管理员?
谢谢 里程
【问题讨论】:
标签: html node.js express passport.js passport-local
login.js 文件:
var findUser = function(req, res, next) {
var user = User.find({email:req.body.email},function(err,user){
if (!user) {
res.locals.error = 'No such account exists.'
return res.render('frontend/login')
}
next()
});
}
var authenticate = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
console.log('ATUH ERROR');
console.log(err , user,info)
res.locals.error = 'Invalid login credentials provided.'
return res.render('frontend/login')
}
req.logIn(user, function(err2) {
if (err2) {
console.log('LOGIN TIME ERROR')
res.locals.error = 'Internal system error while logging in.'
return res.render('frontend/login')
}
console.log('user redirect');
if(user.role=='user'){
res.redirect('/user/dashboard');
}
if(user.role=='admin'){
res.redirect('/admin/dashboard');
}
})
})(req, res, next)
}
module.exports = [findUser, authenticate]
【讨论】: