1

mysqlユーザー行の値に基づいてノード、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

あなたの戦略は、ユーザーを認証し、そのユーザーを完了コールバックに送信するために使用するものです。見つかったユーザーが返されたときにユーザーレベルのプロパティを持っている場合は、行ったようにアクセスできますreq.user.userlevel

于 2014-11-01T01:36:04.393 に答える