Passport本地策略创建的用户对象与反序列化用户创建的用户对象

时间:2019-09-15 00:36:35

标签: node.js passport.js

定义本地策略时,我们将创建一个User对象,并将其传递给回调函数。

passport.use(new LocalStrategy(function(username, password, cb) {
    // query database to check that credentials are correct.
    // var User = {username: username, etc};
    // return cb(null, User);
});

用户将在身份验证后通过req.user访问。

此User对象被传递给serializeUser。

passport.serializeUser(function(user, cb) {
    cb(null, user.username);
});

此用户名存储为req.session.passport.user。然后将其传递给deserializeUser。

passport.deserializeUser(function(username, cb) {
    // Typically here I see the username or id being used to
    // query the DB to create a user object "user" with more
    // data than just the username (whatever we need).
    // We pass that user object to the callback.
    // cb(null, user);
});

此用户对象存储为req.user。

问题:

在req.user可以访问的本地策略中定义用户对象,然后在req.user可用的deserializeUser函数中定义用户对象有什么意义呢?为什么我们在两个地方定义相同的User对象?每个人都在不同的时间定义req.user吗?是将本地策略中的User对象用于身份验证后的第一个重定向,然后将反序列化用户对象用于所有后续重定向,还是这样吗?为什么两个相同的对象?

0 个答案:

没有答案