Я работаю над веб-приложением, в котором я пытаюсь реализовать проверку подлинности jwt для обеспечения безопасности. Я отправляю сгенерированный токен на клиентскую сторону и сохраняю его в заголовках, но когда я отправляю HTTP-запрос, тогда заголовок показывает пустой на стороне сервера.
это часть кода на стороне сервера для модуля входа.
var profile = {
name:rows[0].name,
email:rows[0].email,
role:rows[0].role_id
};
var token = jwt.sign(profile,'shhhhhhared-secret',{expiresInMinutes: 60*5 });
res.json({
success: true,
user: rows[0], //userobject
token: token
});
это часть контроллера, в которой мы настраиваем ответ в sesssionstorage.
dbServices.UserAuthenticate($scope.email,
$scope.password).then(function(response) {
$rootScope.showLoader = false;
if (response.data.success) {
var session_data = {
'token':response.data.token,
'user':{
'name':response.data.user.name,
'role':response.data.user.role_id,
'email':response.data.user.email
}
};
sessionStorage.sessionData = JSON.stringify(session_data);
$location.path('/');
} else {
$scope.msg = 'Invalid Email or Password!'
}
})
это файл конфигурации, где я устанавливаю заголовки
App.factory('authInterceptor', ['$rootScope', '$q', '$window',
function($rootScope, $q, $window) {
return {
request: function(req) {
req.headers = req.headers || {};
if (sessionStorage.sessionData.token) {
req.headers.Authorization = 'Bearer ' + sessionStorage.sessionData.token;
}
return req;
},
response: function(response) {
if (response.status == 401) {
console.log('header auth 401 login');
$window.location = '/login';
}
return response || $q.when(response);
}
}
}
]);
App.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptor');
});
Я не понимаю, что в этом не так. Может кто-нибудь мне помочь.
Вы выполняете JSON.stringify(session_data)
при сохранении токена, но перед его чтением вы не делаете JSON.parse(sessionStorage.sessionData)
.
Попробуйте изменить
if (sessionStorage.sessionData.token) {
req.headers.Authorization = 'Bearer ' + sessionStorage.sessionData.token;
}
с
var session_data = JSON.parse(sessionStorage.sessionData);
if (session_data.token) {
req.headers.Authorization = 'Bearer ' + session_data.token;
}