У меня есть простое многостраничное приложение, написанное на vanilla JS, Pug и Node, которое использует вход в систему с помощью JWT. Когда пользователь входит в систему, клиенту возвращается JWT. JWT хранится в localStorage
. Вот мой ajax-запрос на стороне клиента, когда пользователь входит в систему и возвращает токен:
$.ajax({
url: "/login",
type: "POST",
data: { arr },
success: (res) => {
if (res.status == 200) {
localStorage.setItem("token", res.token);
console.log("success");
}
},
error: (err) => { console.log(err) }
});
выше работает отлично.
Каждая страница на сайте имеет несколько различных ссылок или кнопок: /home
, /profile
, /about
и т. Д. Некоторые маршруты защищены (только для зарегистрированных пользователей), поэтому я ' м, используя JWT в первую очередь. Я видел на уроках YouTube, что JWT должен храниться в localStorage
и отправляться в запросах в шапке. Я полагаю, что у меня уже есть серверное промежуточное ПО, которое успешно проверит наличие в заголовке действительного JWT. У меня такой вопрос: Как добавить JWT в заголовок запроса, когда пользователь нажимает ссылку на моей странице, , чтобы я мог выполнить проверку на стороне сервера? Возможно ли это, если я использую vanilla JS или мне нужно другое решение?
Вот типичная страница для моего сайта (написано на Pug).
body
h1 History of changes
div View previous changes
br
each val, ind in histArr
div.history
a(href="/diff/" + val.numb)
button See changes
span= " " + val.date + " " + val.author + " " + val.message
br
a(href="/history")
button /history
a(href="/")
button home
a(href="/profile")
button profile
Как добавить JWT в заголовок, когда пользователь нажимает эти кнопки?
EDIT
Например: пользователь находится на домашней странице моего сайта. Они нажимают на ссылку, которая является защищенным маршрутом. Я хочу проверить, вошли ли они (то есть, имеют JWT) перед рендерингом страницы. Как мне добавить JWT в заголовок запроса, чтобы проверить это? В частности, является ли использование вызова ajax единственным способом добавления моего JWT в заголовок запроса или есть другой способ?