node.js - req.user 在 Sean.js 中未定义

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

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

user.server.config.js 是对 session 进行序列化和反序列化的地方:

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

是这里的问题还是应该修改其他内容?我相信这与此有关,因为它也有问题,当我重新加载 session 时,我必须再次登录。

最佳答案

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

关于node.js - req.user 在 Sean.js 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43526078/

相关文章:

serialization - 为什么 Soap Serializer 不支持序列化通用类型?

java - 我应该如何在java中读取和写入包含List的对象?

entity-framework - 防止 Entity Framework 序列化 EntityKey、EntitySetName 等

node.js - MarkLogic - node.js - 如何要求 cts 进行搜索

html - MIME 类型 ('text/html' ) 不可执行,并且在尝试使用 express 呈现 angular2 时启用严格的 MIME 类型检查

node.js - 无法执行 "sudo npm install --save firebase-admin"

post - gmail 登录时的 _utf8 POST 参数包含雪人字符

java - 请求开始时的异常 - ClientAuth SSL

javascript - Ajax 成功函数无法处理返回的 json 数据和状态 200/304

javascript - 在某些 REST API 上有选择地启用 HTTP 基本身份验证