1

我发现了这个很棒的节点 mysql 样板:

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

效果很好!但是,现在我需要将它连接到我现有的用户表中,并且我的关键字段名为 userID,而不仅仅是 id,并且在 mysql 中更改关键字段名会破坏示例。所以我的问题是,我需要在项目的哪个位置指定不同的 id 字段名称?我在 /util/auth.js passport.serializeUser 中看到了 user.id,在 passport.deserializeUser 函数中看到了 id,但它似乎也必须在其他地方指定。我希望这对passportjs的用户来说是一个简单的问题!

4

1 回答 1

1

是的,您应该只需要更改serializeUseranddeserializeUser函数中的代码。这两个函数由您控制,并在其中说明您希望序列化到会话 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

于 2014-05-23T21:29:44.943 回答