Поэтому, как только вы получите токен из запроса на вход в систему, вам необходимо сохранить свой токен. Похоже, вы на правильном пути, думая о localStorage. Кроме того, я бы порекомендовал пойти дальше и использовать синтаксис async / await, так как его гораздо проще читать / использовать. Это требует от вас использовать обещания, но это гораздо более читабельно. И вместо того, чтобы разрешать / отклонять функции, вы просто заключаете код в блоки try / catch. Поэтому, чтобы сохранить свой токен в localStorage после входа в систему, сделайте что-то вроде этого:
async function handleLogin(un, pw) {
try {
let response = await fetch('https://example.api.com/login', {
method: "POST", // POST
mode: "cors",
cache: "no-cache",
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Access-Control-Allow-Origin': '*',
'Accept': 'application/json'
},
redirect: "follow",
referrer: "no-referrer",
body: JSON.stringify({
isArray: false,
data: {
email: document.getElementById("email").value,
password: document.getElementById("passwordNew").value
}
})
})
response = response.json();
window.localStorage.setItem('token', response.data.token)
} catch(e) {
console.log('error while logging in', e)
}
}
Затем, когда вы захотите использовать свой токен в будущих запросах, вы извлекаете его из localStorage. Например:
async function editProfile(updatedProfileInfo) {
const token = localStorage.getItem('token');
try{
let response = await fetch('https://someurl.com/edit', {
method: "POST",
...
'x-access-token': token,
...
})
//handle response
} catch(e) {}
}
Несколько вещей, на которые стоит обратить внимание:
- Убедитесь, что вы знаете, как ваш API ожидает, что токены будут объединены в запросы. В приведенном выше примере я вставляю его в раздел
x-access-token
заголовка запроса. Однако многие люди используют файлы cookie и т. Д. Убедитесь, что вы передаете их там, где они ожидаются.
- Перед выполнением запроса часто принято проверять, действителен ли токен или срок его действия истек. Таким образом, возможно, имеет смысл также хранить весь ваш ответ на вход в систему, который включает в себя информацию об истечении срока действия и время окончания. Затем вы можете выполнить проверку перед выполнением вызова ajax и просто выйти из системы, если токен недействителен. Когда вы сделаете это, обязательно удалите токен и из localStorage.