gpt4 book ai didi

sails.js - 如何从 sails action2 调用 Passport Authenticate 函数

转载 作者:行者123 更新时间:2023-12-05 06:33:02 25 4
gpt4 key购买 nike

我正在使用 sails js v1.0。我不知道如何调用 Passport 的身份验证功能。由于 req、res 和 next 不存在于 sails 新 Controller 类型 (action2) 中。

我想在 sails js v1 应用程序中使用基于 JWT 的身份验证。

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

我的 config/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);
})
}));

最佳答案

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

  1. 使用this.req

我将 this.reqthis.res 用于 passport.authenticate() 函数,并且有效。如您所知,登录需要 req.login(),但在我的例子中,this.req 没有 login() Passport 派生的功能。所以,我没有这样使用它。

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

关于sails.js - 如何从 sails action2 调用 Passport Authenticate 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50946217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com