登录node.js后,如何根据mysql用户行中的值创建自定义的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');
        }
    });


我不知道为什么我的代码不起作用... userlevelusers表中的实列
谢谢你的建议

最佳答案

您的strategy用于验证用户身份,然后将该用户发送到完成的回调中。如果找到的用户在返回时具有userlevel属性,则您可以像完成操作一样通过req.user.userlevel访问它。

07-24 16:59