在Sean.js

时间:2017-04-20 17:24:07

标签: node.js authentication serialization passport.js sequelize.js

我正在使用Sean.js处理项目,最近我尝试添加中间件来保护我的api路由。我按照"文章"使用server.policy.js的示例,当我尝试使用req.user变量时,它表示未定义。我开始研究这个问题,它与passport.js有关。我工作的时间不超过2个月,而且我对这一切并不十分熟悉。

user.server.config.js上是Serelize和反序列化会话的地方:

module.exports = function(app, db) {

  // Serialize sessions
  passport.serializeUser(function(user, done) {
    var userData = {
      id: user.id,
      firstName: user.firstName,
      lastName: user.lastName,
      displayName: user.displayName,
      username: user.username,
      email: user.email,
      profileImageURL: user.profileImageURL,
      roles: user.roles,
      additionalProvidersData: user.additionalProvidersData
    };
    done(null, userData);
  });

  // Deserialize sessions
  passport.deserializeUser(function(user, done) {
    done(null, user);
  });

  // Initialize strategies
  config.utils.getGlobbedPaths(path.join(__dirname, './strategies/**/*.js')).forEach(function(strategy) {
    require(path.resolve(strategy))(config);
  });

  // Add passport's middleware
  app.use(passport.initialize());
  app.use(passport.session());
};

这是问题还是应该修改别的东西?我相信这对此有所帮助,因为我还有一个问题,当我重新加载会话结束时,我必须再次登录。

1 个答案:

答案 0 :(得分:0)

就像上面的commnet一样。 Sean.js使用Redis来存储会话,所以你需要先安装它然后运行它,会话将在req.user上提供