passportJS:使用名称不是id的用户ID字段

时间:2014-05-23 21:04:47

标签: mysql node.js passport-local

我找到了这个伟大的节点mysql样板:

https://github.com/ocastillo/nodejs-mysql-boilerplate

它的效果非常好!但是,现在我需要将它挂钩到我现有的用户表中,并且我的键字段名为userID,而不仅仅是id,并且更改mysql中的键字段名会破坏该示例。所以我的问题是,在项目中我需要指定一个不同的id字段名称吗?我在/util/auth.js中看到了access.serializeUser中的user.id和passport.deserializeUser函数中的id,但它似乎也必须在别处指定。我希望对于passportjs的用户来说这是一个简单的问题!

1 个答案:

答案 0 :(得分:1)

是的,您只需要更改serializeUserdeserializeUser功能中的代码。您控制的这两个函数,并在其中声明您要序列化到会话cookie中的内容(当用户登录时),并从会话cookie中反序列化(当用户登录后重新访问该站点时)。一旦他们回来,就把他们想象成记住这个人是谁的方法。 passport.use函数仅用于定义身份验证策略,在此范围内,您将“以”方式“记录用户”。

所以这应该有用(假设我已经按照你上面所说的那样):

passport.serializeUser(function(user, done) {
    done(null, user.userID);
});


passport.deserializeUser(function(user_id, done) {
    new data.ApiUser({userID: user_id}).fetch().then(function(user) {
        return done(null, user);
    }, function(error) {
        return done(error);
    });
});

您可能会从更多示例中受益,这是我在Node中的护照配置上放在一起的要点(但是这个使用Mongo):https://gist.github.com/dylants/8030433