【问题标题】:User groups with Passport, Node.js使用 Passport、Node.js 的用户组
【发布时间】:2018-05-31 12:11:29
【问题描述】:

在这里寻找一些指针。

我想创建一个带有登录表单的页面作为登录页面,当您登录时,您将被带到您自己的仪表板。但是,如果您以具有管理员权限的用户身份登录,他们将被带到管理仪表板。

实现这一目标的最佳方法是什么?只是有一些中间件来检查他们是否是管理员?

谢谢 里程

【问题讨论】:

    标签: html node.js express passport.js passport-local


    【解决方案1】:

    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]
    

    【讨论】:

    • 谢谢。这是在路由中完成还是在中间件函数中完成?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2013-05-24
    • 2016-10-31
    • 2018-09-10
    • 2014-01-24
    • 2014-04-16
    • 2018-07-27
    相关资源
    最近更新 更多