Nodejs - 使用redis DB为express应用程序提供护照oauth2身份验证

时间:2014-02-17 11:23:03

标签: node.js express amazon passport.js node-redis

我在为Passport Amazon oAuth2创建Redis数据库模型时遇到问题。我正在使用“redis-connect”模块,我有一个正在运行的Redis本地服务器。我的redis服务器成功存储了会话数据,因此模块和服务器运行良好。我只需要User变量的帮助。 这是我的代码:

 //create a user model
var User = new RedisStore({ host:'127.0.0.1', port:6379, prefix:'token' });



passport.serializeUser(function(user, done) {
     console.log('serializeUser: ' + user._id);
     done(null, user._id);
    });

passport.deserializeUser(function(id, done) {
     User.findById(id, function(err, user){
       console.log(user);
       if(!err){ done(null, user);}
       else {done(err, null);}
     });
   });

passport.use(new AmazonStrategy({
    clientID: "foo",
    clientSecret: "SECRET",
    callbackURL: "https://localhost/auth/amazon/callback"
  },
  function(accessToken, refreshToken, profile, done) {
  User.findOne({ oauthID: profile.id }, function(err, user) {
  if(err) { console.log(err); }
  if (!err && user !== null) {
    done(null, user);
  } else {
    var user = new User({
      oauthID: profile.id,
      name: profile.displayName,
      created: Date.now()
    });
    user.save(function(err) {
      if(err) {
        console.log(err);
      } else {
        console.log("saving user ...");
        done(null, user);
      }
    });
  }
  });
  }
  ));

此外,未定义findById函数。我不知道怎么......我相信它是redis-connect模块的一部分。任何人都可以帮助我吗?

0 个答案:

没有答案