Таким образом, в основном, когда я вхожу в систему, мой backend возвращает мне токен, поэтому я храню его так:
// var token is global
token = res.data.token;
sessionStorage.setItem("token", token);
И когда я выхожу из системы, я просто удаляю элементы из sessionStorage и перезагружаю var:
token = '';
sessionStorage.removeItem("token");
Затем во всех моих запросах я использую var для создания заголовка
{ headers: { "Authorization": "Bearer " + token } }
Но я не знаю, должен ли я хранить маркер var или просто получить доступ к хранилищу для каждого запроса, например:
{ headers: { "Authorization": "Bearer " + sessionStorage.getItem("token"} }
Сейчас я просто использую хранилище, если пользователь обновляет страницу, поэтому он не теряет контекст javascript, потому что я думал, что он более эффективен, чем доступ к хранилищу для каждого запроса, но я не знаю, что такое лучший подход к безопасности - или, что обычно делают разработчики?
Это не имеет никакого значения с точки зрения безопасности; ни один из них более безопасен, чем другой.
Если вам нужен только токен при выполнении вызова ajax, не беспокойтесь о накладных sessionStorage
его получение из sessionStorage
. Эта операция не занимает сколько-нибудь значительного времени, конечно, не сравнивается с выполнением вызова ajax. Вам нужно будет только кэшировать результат в переменной, если вы используете его в узком цикле, выполняющем тысячи операций (или, возможно, сотни тысяч), пока пользователь их ждал. Вы можете захотеть его в переменной по другим причинам (например, удобство), но в случае, когда вы описываете, нет аргумента эффективности.
Общее правило: Беспокоитесь о производительности, если у вас есть проблемы с производительностью (но, знаете ли, не глупо делать то, что, как вы знаете, ужасно неэффективно...). :-)