Implementei as alterações realizadas na aula 2 videos 06 e 07. Estou recebendo esse erro na hora de fazer o post em /usuario/login
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Error: Login sessions require session support. Did you forget to use `express-session` middleware?<br> at SessionManager.logIn (C:\Users\rafael.mello\Documents\API nodejs\CRUD pronto para JWT\node_modules\passport\lib\sessionmanager.js:21:33)<br> at IncomingMessage.req.login.req.logIn (C:\Users\rafael.mello\Documents\API nodejs\CRUD pronto para JWT\node_modules\passport\lib\http\request.js:39:26)<br> at Strategy.strategy.success (C:\Users\rafael.mello\Documents\API nodejs\CRUD pronto para JWT\node_modules\passport\lib\middleware\authenticate.js:256:13)<br> at verified (C:\Users\rafael.mello\Documents\API nodejs\CRUD pronto para JWT\node_modules\passport-local\lib\strategy.js:83:10)<br> at Strategy._verify (C:\Users\rafael.mello\Documents\API nodejs\CRUD pronto para JWT\src\usuarios\estrategias-autenticacao.js:31:13)</pre>
</body>
</html>
partes do codigo alteradas: usuarios-rotas
app
.route('/usuario/login')
.post(passport.authenticate('local', { sessions : false }), usuariosControlador.login)
usuarios-controlador
login: (req, res) => {
res.status(204).send();
},
./usuarios/index.js
module.exports = {
rotas: require('./usuarios-rotas'),
controlador: require('./usuarios-controlador'),
modelo: require('./usuarios-modelo'),
estrategiasAutenticacao: require('./estrategias-autenticacao')
}
estrategias-autenticacao
const passport = require('passport')
const { InvalidArgumentError } = require('../erros')
const LocalStrategy = require('passport-local').Strategy
const Usuario = require('./usuarios-modelo')
const brcrypt = require('bcrypt')
function verificaUsuario(usuario) {
if(!usuario) {
throw new InvalidArgumentError('Não foi possível encontrar um usuário com esse email!');
}
}
async function verificaSenha(senha, senhaHash) {
const senhaValida = await brcrypt.compare(senha, senhaHash)
if(!senhaValida) {
throw new InvalidArgumentError('E-mail ou senha inválidos')
}
}
passport.use(
new LocalStrategy({
usernameField: 'email',
passwordField: 'senha',
sessions: false
}, async (email, senha, done) => {
try {
const usuario = await Usuario.buscaPorEmail(email)
verificaUsuario(usuario);
await verificaSenha(senha, usuario.senhaHash)
done(null, usuario)
} catch (erro) {
done(erro);
}
})
)