Я использовал паспортную аутентификацию на основе имени пользователя и пароля в своих парусах. js проект на основе. Версия паруса. js - 1.2.3. Я застрял в ситуации, когда мой логин работает нормально, но я не могу начать сеанс, потому что this.req не определен внутри метода passport.authenticate. В моем коде ниже я хочу установить sessData в сеансе.
Причина неиспользования сессии паспорта в том, что я хочу использовать ниже паруса. js Настройки конфигурации sesssion для моего приложения.
Файл контроллера: login-manager. js
fn: async function (inputs,exits) {
const passport = require('passport');
passport.authenticate('local',{ session: false },function (err,user,response){
if(typeof err !=='undefined' && err && response ==='opLoginError'){
return exits.error();
}
if(typeof response !=='undefined' && (response === 'incorrectUser' || response === 'incorrectPassword')){
return exits.invalid();
}
if(user){
let sessData = {
userId : user.id,
operatorType : user.operatorType,
opName : user.opName,
opMainId : user.opMainId
};
// Here i want to start session and set sessData in session
return exits.success({
status : 200,
next: 'chatoperators'
});
}
})(this.req,exits);
}
Файл конфигурации: config / session. js
module.exports.session = {
secret: 'asdfasdfasdfasdfasdfasdfqwertyui',
name: 'chatapp.sid',
cookie: {
secure: false,
maxAge: 24 * 60 * 60 * 1000
},
adapter : '@sailshq/connect-redis',
url : 'redis://:welcome@127.0.0.1:6379/16'
};
Я также пытался получить req, res следующим образом fn: asyn c функция (входы, выходы, {req, res} ), но получая неопределенное значение. Также пытался вызвать passport.authenticate с помощью await, чтобы я мог получить пользовательские данные вне passport.authenticate, где this.req не является неопределенным, но это также не работает. Пожалуйста, предложите решение, чтобы оно заработало.