【问题标题】:In passportjs deserialization, store sesssion data in browser cookie在护照js反序列化中,将会话数据存储在浏览器cookie中
【发布时间】:2015-01-07 16:48:08
【问题描述】:

在 passportjs 序列化和反序列化中,我如何访问浏览器 cookie(我将会话数据存储在持久浏览器 cookie 上)而不是存储在数据库中。

【问题讨论】:

    标签: node.js session cookies express passport.js


    【解决方案1】:

    如果您正确配置了护照中间件,护照会话数据将作为参数传递给方法 passport.deserializeUser。

    确保已在 express 中正确设置护照:

    app.use(express.cookieParser());
    app.use(express.session({ secret: 'your secret phrase' }));
    app.use(passport.initialize());
    app.use(passport.session());
    

    实现passport.serializeUserpassport.deserializeUser

    // user contains the user data returned by the authentication strategy
    passport.serializeUser(function(user, done) {
      done(null, user);
    });
    // obj contains the passport session data
    passport.deserializeUser(function(obj, done) {
      // Use obj to get user info or include it directly into the request object  
      done(null, obj);
    });
    

    用户数据将在req.user 中提供。

    【讨论】:

    • 所以它使用cookie秘密来加密你正在序列化的用户?在文档中,他们只是序列化了 user.id,他们说这样做是为了节省时间,因为它是一个较小的对象。这在密码学上是安全的吗?如果我不指定秘密,你知道序列化用户的行为是什么吗?
    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多