Sails.js 在扬帆时,它会抛出错误

Sails.js 在扬帆时,它会抛出错误,sails.js,passport.js,Sails.js,Passport.js,您好,我是sails和passport js的新手,我正在尝试在sails中使用passport js进行身份验证,但在配置文件夹中添加passport.js时出现了一个错误..任何人都知道如何解决此问题 Here is my error C:\Users\sachinn\AppData\Roaming\npm\node_modules\sails\node_modules\include-all\lib\help-include-all-sync.js:281 t

您好,我是sails和passport js的新手,我正在尝试在sails中使用passport js进行身份验证,但在配置文件夹中添加passport.js时出现了一个错误..任何人都知道如何解决此问题

Here is my error

C:\Users\sachinn\AppData\Roaming\npm\node_modules\sails\node_modules\include-all\lib\help-include-all-sync.js:281
              throw e;
              ^

`include-all` attempted to `require(E:\myApi\config\passport.js)`, but an error occurred::
Details:TypeError: JwtStrategy requires a function to retrieve jwt from requests (see option jwtFromRequest)
    at new JwtStrategy (E:\myApi\node_modules\passport-jwt\lib\strategy.js:39:15)
    at Object.<anonymous> (E:\myApi\config\passport.js:68:3)
    at Module._compile (module.js:570:32)

传递给
JwtStrategy
构造函数的选项必须有一个键
jwtFromRequest

您的代码中缺少它

jwtFromRequest(必选)函数,该函数将请求作为唯一 参数,并将JWT作为字符串或null返回。看 从请求中提取JWT以获取更多详细信息


我想我用它看看这个passport.use(新的JwtStrategy(JWT_STRATEGY_CONFIG,_onJwtStrategyAuth))
JWT\u STRATEGY\u CONFIG
必须包含键
jwtFromRequest
,但代码中缺少该键。
/**
 * Passport configuration file where you should configure strategies
 */
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var JwtStrategy = require('passport-jwt').Strategy;

var EXPIRES_IN_MINUTES = 60 * 24;
var SECRET = process.env.tokenSecret || "4ukI0uIVnB3iI1yxj646fVXSE3ZVk4doZgz6fTbNg7jO41EAtl20J5F7Trtwe7OM";
var ALGORITHM = "HS256";
var ISSUER = "nozus.com";
var AUDIENCE = "nozus.com";

/**
 * Configuration object for local strategy
 */
var LOCAL_STRATEGY_CONFIG = {
  usernameField: 'email',
  passwordField: 'password',
  passReqToCallback: false
};

/**
 * Configuration object for JWT strategy
 */
var JWT_STRATEGY_CONFIG = {
  secretOrKey: SECRET,
  issuer : ISSUER,
  audience: AUDIENCE,
  passReqToCallback: false
};

/**
 * Triggers when user authenticates via local strategy
 */
function _onLocalStrategyAuth(email, password, next) {
  User.findOne({email: email})
    .exec(function (error, user) {
      if (error) return next(error, false, {});

      if (!user) return next(null, false, {
        code: 'E_USER_NOT_FOUND',
        message: email + ' is not found'
      });

      // TODO: replace with new cipher service type
      if (!CipherService.comparePassword(password, user))
        return next(null, false, {
          code: 'E_WRONG_PASSWORD',
          message: 'Password is wrong'
        });

      return next(null, user, {});
    });
}

/**
 * Triggers when user authenticates via JWT strategy
 */
function _onJwtStrategyAuth(payload, next) {
  var user = payload.user;
  return next(null, user, {});
}

passport.use(
  new LocalStrategy(LOCAL_STRATEGY_CONFIG, _onLocalStrategyAuth));
passport.use(
  new JwtStrategy(JWT_STRATEGY_CONFIG, _onJwtStrategyAuth));

module.exports.jwtSettings = {
  expiresInMinutes: EXPIRES_IN_MINUTES,
  secret: SECRET,
  algorithm : ALGORITHM,
  issuer : ISSUER,
  audience : AUDIENCE
};