1

登录后如何根据mysql用户行的值在node、js中制作自定义successRedirect页面?像这样的东西:

passport.use(new LocalStrategy(
    function(username, password, done) {

        var strQuery = "SELECT * FROM users WHERE username='"+username+"' and password_text='"+password+"'";
        connection.query( strQuery, function(err, users){
            if (err) { return done(err); }

            if (typeof users[0] == 'undefined' && users.length == 0) {
                return done(null, false, { message: 'Incorrect username or password' });
            }
            if (password != users[0].password_text ) {
                return done(null, false, { message: 'Incorrect password.' });
            }
            return done(null, users[0]);
        });
    }
));

passport.serializeUser(function(user, done) {
    done(null, user.id);
});

passport.deserializeUser(function(id, done, ) {

    var strQuery = "SELECT * FROM users WHERE id='"+id+"'";
    connection.query( strQuery, function(err, users){
        return done(null, users[0]);
    });
});



app.post('/login',
    passport.authenticate('local', { failureRedirect: '/login', failureFlash: true }),
    function(req, res, next) { 
        if (req.user.userlevel > 3) {         // Here is my problem I dont't know how get userlevel value
            return res.redirect('/index1');
        } else {
            res.redirect('/index2');
        }
    });

我不知道为什么我的代码不起作用...userlevel是表中的真实列users感谢您的任何建议

4

1 回答 1

2

您的策略是您用来验证用户,然后将该用户发送到 done 回调。如果您找到的用户在返回时具有用户级别属性,那么您将能够req.user.userlevel像您所做的那样访问它。

于 2014-11-01T01:36:04.393 回答