Cursos / Informática para Internet / Desenvolvimento Backend / Aula
Agora que já estamos gerando o token JWT, é preciso validar. A ideia é proteger algumas rotas para que só usuários autenticados possam utilizá-las.
Na pasta de middleware, crie um arquivo, nomeando-o de 'autenticacao.mid.js' e, acompanhando a aula, implemente o código abaixo:
const jwt = require('jsonwebtoken')
function autenticar(req, res, next){
const auth = req.headers["authorization"]
const token = auth && auth.split(' ')[1]
if (!token){
return res.sendStatus(401)
}else{
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, paylod) => {
if (err) return res.sendStatus(403)
req.user = paylod
next()
})
}
}
module.exports = autenticar
Após criado, para utilizar o middleware, faça a importação no arquivo 'post.rota.js' através da linha:
const autenticar = require('../middleware/autenticacao.mid')
E após isso, utilize a função de autenticar nas rotas que fazem alteração nos posts, como abaixo:
router.post('/', autenticar, upload.single('foto'))
router.post('/', autenticar, postMid)
router.put('/', autenticar, postMid)
Agora, quando o usuário desejar fazer um novo post, deverá estar autenticado. Para testar isso, altere a requisição de adição de um post no arquivo ''.post.http inserindo novas informações.
A requisição deverá ficar como se vê a seguir:
POST http://localhost:8080/api/posts
Content-Type: application/json
Authorization: Bearer 'Token'
{
"titulo": "Programando em JS Backend",
"texto": "Título do texto...",
"userId": 3
}
A informação ''Token deverá ser substituída pelo token, que será retornado ao usuário fazer a autenticação.
Até o momento, ao conseguir esse token, ele fica para sempre válido e isso não é uma boa prática. Então, ao gerar o token na rota de login, é interessante passar um tempo de vida para essa informação.
Então, no momento em que estiver gerando o token, passe o parâmetro expiresIn com o tempo de vida dele. A alteração é feita dessa forma:
const token = jwt.sign(payload, process.env.ACCESS_TOKEN_SECRET, {expiresIn: '40s'})
Versão 5.3 - Todos os Direitos reservados