【问题标题】:How to call Passport Authenticate function from sails action2如何从sails action2调用Passport Authenticate函数
【发布时间】:2018-11-29 11:15:15
【问题描述】:

我正在使用sails js v1.0。我不知道如何调用护照的身份验证功能。由于新控制器类型(action2)中没有 req、res 和 next。

我想在 Sails js v1 应用程序中使用基于 JWT 的护照验证。

 fn: async function (inputs, exits) {
          passport.authenticate('jwt', {session: false}, (err, user, info) => {
        })(inputs, exits);
    }

我的配置/passport.js 看起来像

passport.use('jwt', new JWTStrategy(opts, (jwtPayload, done) => {
  //find the user in db if needed. This functionality may be omitted if you store everything you'll need in JWT payload.
  User.findOne({email: jwtPayload.email}).then(async (err, user) => {

    if (err) {
      return done(err, false);
    }

    if (!user) {
      return done(null, false, {message: 'Incorrect email.'});
    }

    const validate = await sails.helpers.checkPassword(inputs.password, userRecord.password);

    if(!validate) return done(null, false, { message : 'Wrong Password'});

    return done(null, user, { message : 'Logged in Successfully Hola'});

  }).catch(err => {
    return done(err);
  })
}));

【问题讨论】:

  • 您找到解决方案了吗?
  • 是的,我发现了。你可以使用 this.req 来解决这个问题
  • 能否请您发布您的解决方案作为您问题的答案?

标签: sails.js passport.js passport-jwt


【解决方案1】:

Sails.js document中,简单的提到了访问req对象的两种方式。

  1. 使用this.req

我将this.reqthis.res 用于passport.authenticate() 函数,并且成功了。 如您所知,登录需要req.login(),但在我的情况下,this.req 没有通过护照派生的login() 函数。所以,我没有用这种方式。

  1. 使用env 作为第三个参数。

在文档中,此方法是一种替代方法,但在我的情况下,两者是不同的。 我可以访问env.req.login()

所以我认为使用env 作为第三个参数比this.req 更好。

fn: async function (inputs, exits, env) {
  passport.authenticate('jwt', { session: false }, (err, user, info) => {

    // Write your codes. The below is an example.

    if (err || !user) return exits.unauthorized();

    env.req.login(user, function (err) {
      if (err) exits.error(err);

      return exits.success(user);
    });


  })(env.req, env.res);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2016-01-01
    • 1970-01-01
    • 2017-11-26
    • 2017-10-05
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多