0

Express/SQL で Passport の serializeUser 関数を使用する方法がよくわかりません。

ここに私の質問があります:

  1. Passport.serializeUser は「ユーザー」とは何かをどのように認識していますか? どこに指定すればいいですか?
  2. Passport.serializeUser は、どのリクエスト オブジェクトを Cookie にバインドする必要があるかをどのように認識しますか?

私のアプリの構成は次のようになります。

var passport = require('passport');
app.use(session({ secret: 'Secret',
              saveUninitialized: true,
              resave: true}));
app.use(passport.initialize());
app.use(passport.session());

また、twitter_auth.js で次のコードをアプリに公開します。

// twitter authentication and login
app.get('/auth/twitter', passport.authenticate('twitter'));

// handle callback after twitter has authenticated user
app.get('/auth/twitter/callback',passport.authenticate('twitter',{
            successRedirect: '/',
            failureRedirect: '/'
}));

// used to serialize user
passport.serializeUser(function(user,done){
    done(null,user);
});


// used to deserialize the user
passport.deserializeUser(function(User_ID,done){
   connection.query('SELECT * from UsersTable where User_ID = '+User_ID,     function(err,rows){
      done(err,rows[0]); 
   });
});

私がそれを見つけようとすると:

// used to serialize user
passport.serializeUser(function(user,done){
 console.log('spotted here!');  
 done(null,user);
});

私は何も見ません。どうしたの?

4

1 に答える 1

0

2 つの質問に答えるには:

  1. 認証コード内の「ユーザー」を定義する必要があります。

    次のようになります。

    passport.use(new TwitterStrategy({
        consumerKey:*******,
        consumerSecret:******,
        callbackURL:'/auth/twitter/callback'
    },
    function(token, tokenSecret, profile,done){
      var user = db.call(retrieve a user) ; //whatever you want it to be
      done(null,user);
     });
    
  2. 認証ルートは、最初に何らかのリクエスト オブジェクトを介してアクセスされました。コードは次のとおりです。

    done(null,user);
    

    あなたのreqオブジェクトを知っています。私の理解では、そうです。

これに関する良い情報源は次のとおりです: http://toon.io/understanding-passportjs-authentication-flow/

于 2014-11-20T00:04:40.380 に答える