Я пытаюсь реализовать аутентификацию jwt для своих приложений nodejs, express и angularjs. Пока что я сгенерировал токен и сохранил его в моем localStorage
. Согласно этому руководству, Я реализовал authInterceptor
в angular factory следующим образом:
app.factory('authInterceptor', function ($rootScope, $q, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
if ($window.localStorage.myToken) {
config.headers.Authorization = 'Bearer ' + $window.localStorage.myToken;
}
return config;
},
response: function (response) {
if (response.status === "401") {
$window.location.replace('/dash');
}
return response || $q.when(response);
}
};
});
Я вставил перехватчик в файл конфигурации следующим образом:
$httpProvider.interceptors.push('authInterceptor');
Пока я отправил учетные данные на сервер, сгенерировал токен и сохранил его в localStorage
.
Поэтому до тех пор, пока я не удалил токен из localStorage и срок действия токена не истек, я думаю, он должен сохраняться. Если я делаю запросы из загруженной страницы, используя фоновый вызов ajax angularjs, заголовок аутентификации устанавливается так, как должен.
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYSIsInR5cGUiOiJzYWxlcyIsImlhdCI6MTQyMjI2MDExMCwiZXhwIjoxNDIyMjc4MTEwfQ.Iv6W-Tc8Qm4FGclzmgbtjvWFz_tyDwEvrFmMmucONpY
Однако ни мой запрос, ни мой ответ не перехватываются, когда я перехожу на новый маршрут. Например, у меня есть маршрут «/ продажи». Но когда я перехожу к маршруту продаж из адресной строки, ни один из заголовков аутентификации запроса не устанавливается перехватчиком, тем самым возвращая с сервера ошибку авторизации 401, которая также не перехватывается; следовательно, не перенаправляем на /dash
.
Вот ссылка на ошибку и заголовки запроса GET на неавторизованный маршрут '/ sales':