node.js - Passport 反序列化用户未在 sails 中调用

标签 node.js express sails.js passport.js express-jwt

我正在使用 Sails 版本 0.11 并尝试使用 jwt 身份验证配置应用程序。

配置/passport.js

var passport      = require('passport');
var jwt = require('express-jwt');

module.exports = {

  http: {
    customMiddleware: function(app) {
      console.log('express midleware for passport');
      app.use(jwt({ secret: sails.config.session.secret, credentialsRequired: false}).unless({path: ['/login']}));
      app.use(passport.initialize());
      app.use(passport.session());
    }
  }
};

服务/passport.js

/* other code */
passport.serializeUser(function(user, done) {
  console.log(user);
  done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  console.log(id);
  findById(id, function(err, user) {
    if (err)
      done(err);
    else if (!user) {
      done(null, false);
    }
    else
      done(null, user);
  });
});

AuthController.js

module.exports = {

  login: function(req, res) {
    passport.authenticate('local', function(err, info, user) {
      if (err) {
        return res.send(err);
      }
      else if (!user) {
        return res.send(info);
      }
      else {
        var token = jwt.sign(user, sails.config.session.secret, {
          expiresInMinutes: 5 // expires in 5 minutes
        });
        res.json({
          success: true,
          message: 'Enjoy your token!',
          token: token
        });
      }
    })(req, res);
  },

  me: function(req, res) {
    res.send(req.user);
  }
}

为什么我的 desesializedUser 函数从未被调用?我的代码有什么问题?

最佳答案

您是否配置了 Passport 策略?

Passport 上doc ,下面提到。

Before authenticating requests, the strategy (or strategies) used by an application must be configured.

关于node.js - Passport 反序列化用户未在 sails 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32765219/

相关文章:

javascript - Node REPL : Why does this variable assignment fail?

javascript - mysql中使用单引号时出错

node.js - 如何为基于 Express 构建的 REST API 实现 CAS 身份验证

javascript - Node.js 和 Express 上的 Twitter Bootstrap

node.js - 如何使用 mongo-sails 在 Sails js 中存储点(lat,lng)

socket.io - Sails 0.11 从服务器端捕获套接字事件

node.js - 在 Sails.JS 中持久化之前添加缺少的请求参数

javascript - 以 HTTPS 方式提供 Apostrope-CMS S3 Assets 和附件

node.js - 尝试使用唯一索引保存 Mongoose 文档时, Node 服务器崩溃

node.js - 在Docker中构建Angular会抛出 “environment.prod.ts path in file replacements does not exist”