1

我将Passport与node-orm2结合使用进行身份验证。Passport 要求您注册用于序列化和反序列化会话的用户的函数。我的用户存储在我通过 node-orm2 的 Express 中间件访问的数据库中。orm2 中间件将其模型标记到 req 对象上以便于访问。不幸的是,Passport 不提供对deserializeUser. 我遇到了这个解决方案,但我希望有更好的东西:

var User;

passport.use({ passReqToCallback: true }, new LocalStrategy(function (request, username, password, done) {
    if (!User) {
        User = request.models.User;
    }

User
    .find({ username: username })
    .limit(1)
    .run(function (err, users) {
        var user = users[0];

        if (err) {
            done(err);
        } else if (!hasher.verify(password, user.password)) {
            done(null, false);
        } else {
            done(null, user);
        }
    });
}));

passport.deserializeUser(function (id, done) {
    User.get(id, done);
});
4

1 回答 1

1

req 将在即将发布的版本 0.2.0 中传递给护照的序列化和反序列化回调:https ://github.com/jaredhanson/passport/pull/160

于 2014-01-21T18:26:31.423 回答