【问题标题】:req.user is undefined in Sean.jsreq.user 在 Sean.js 中未定义
【发布时间】:2017-09-17 11:23:26
【问题描述】:

我正在使用Sean.js 开展一个项目,最近我尝试添加一个中间件来保护我的 api 路由。我使用 server.policy.js 遵循“文章”示例,当我尝试使用 req.user 变量时,它说未定义。我开始调查这个问题,它与passport.js有关。我在这方面工作的时间不超过 2 个月,而且我对这一切都不是很熟悉。

user.server.config.js 是 Serelize 和 Deserialize 会话的位置:

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());
};

这是问题所在还是应该修改其他内容?我相信这与此有关,因为我也有一个问题,即当我重新加载会话结束时,我必须重新登录。

【问题讨论】:

  • SEAN.JS 使用 Redis 存储会话。您是否安装并运行了 Redis?
  • 是的,我后来发现我必须在后台运行 Redis,这样的菜鸟情况。但从好的方面来说,我学到了很多关于 passport.js 和 node.js 上的会话的工作原理

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2021-04-22
    • 2021-08-16
    • 2015-07-18
    • 2021-12-27
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多