Spring Security. ошибка 401 в браузере но не в postman
Есть две страницы. Первая - login, вторая - chat. Если пользователь введет правильно свои данные в login, то сервер отправит ему jwt токен. Далее по кнопке пользователь должен перейти на страницу chat которая требует чтобы пользователь был авторизирован. Отправляя запрос через postman с токеном у меня все хорошо. Показывается страница chat Когда я делаю то же самое в браузере то при переходе на страницу chat выдается ошибка 401 :( я не понимаю в чем ошибка, правда. вот часть конфигурации:
auth.requestMatchers("/auth/**", "/login", "/signup", "/index.html", "/signup.html", "/css/signup.css", "/js/signup.js", "/login.html", "/css/login.css", "/js/login.js", "/js/chat.js", "/css/chat.css").permitAll(); //сделано
auth.requestMatchers("/chat.html", "/chat").authenticated();
вот login.js
document
.getElementById("usernameForm")
.addEventListener("submit", function (event) {
event.preventDefault();
var username = document.getElementById("name").value;
var password = document.getElementById("password").value;
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:8080/auth/login", true);
xhr.setRequestHeader("Content-Type", "application/json");
var data = JSON.stringify({ username: username, password: password });
xhr.send(data);
xhr.onload = function () {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
if (response.user == null) {
displayError();
} else {
let jwt = response.jwt;
localStorage.setItem("token", jwt);
goToChat(jwt);
}
} else {
console.log("Ошибка");
}
};
});
function goToChat(jwt) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://localhost:8080/chat", true);
xhr.setRequestHeader("Authorization", "Bearer " + jwt);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onload = function () {
if (xhr.status == 200) {
window.location.href = "http://localhost:8080/chat";
} else {
console.error("Error", xhr.status);
}
};
xhr.send();
}
Ответы (1 шт):
Мне надо было работать с Куки. В заголовке токены хранятся лишь на 1 запрос. Потом они про упали. Поэтому их надо где-то хранить. Например, в Куки. Конечно, я еще поменяла CORS. Но основное, что надо было сделать - это добавить фильтр в конфигурацию, который бы считывал токен из куки и обрабатывал его