Я пытаюсь сделать промежуточное ПО авторизации, используя jsonwebtoken, cookie-parser для установки cookie и jQuery в клиенте.
Для этого я использую промежуточное ПО для проверки авторизации.
вот промежуточное ПО
const jwt = require('jsonwebtoken')
module.exports = (req,res,next)=> {
try{
const token = req.headers.authorization.split("=")[1];
const decodedToken = jwt.verify(token, process.env.JWT_KEY)
req.userData = decodedToken;
next();
} catch(error){
return res.status(401).json({
message: "Auth failed"
})
}
}
В моем API я создаю и отправляю токен следующим образом:
const token = jwt.sign({
email: user[0].email,
userId: user[0]._id
},
process.env.JWT_KEY, {
expiresIn: "1h"
}
)
res.cookie('userToken', token)
res.render('index', {
movies: {}, token:token
});
В клиенте я отправляю обратно на сервер так:
var userToken = document.cookie;
// console.log(userToken)
$.ajax({
url: "/movies/add",
type: "GET",
beforeSend: function (xhr, settings) {
console.log(xhr)
xhr.setRequestHeader('Authorization', 'Bearer ' + userToken);
}
});
Маршрут фильмы / добавления получает запрос, поскольку он печатает «он введен», но не перенаправляет на фильмы / добавления фильмов. Чего мне не хватает?
router.get('/add', checkAuth, function (req, res, next) {
console.log('it entered')
res.render('movies/addMovies', {
movies: {}
})
});