我结合使用node-orm2和Passport进行身份验证。Passport要求您注册函数,以便在会话之间序列化和反序列化用户。我的用户存储在一个数据库中,我通过node-orm2的Express中间件访问该数据库。orm2中间件将其模型标记到请求对象上,以便于访问。遗憾是,Passport不提供对deserializeUser中的请求对象的访问。我遇到了这个solution,但我希望能有更好的:
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);
});发布于 2014-01-22 02:26:31
在即将发布的0.2.0版本中,请求将被传递给passport的序列化和反序列化回调,0.2.0:https://github.com/jaredhanson/passport/pull/160
https://stackoverflow.com/questions/17693070
复制相似问题