Для сохранения access и refresh токенов наиболее безопасным и эффективным способом является использование http only cookie.
Http only cookie хранится только на стороне сервера и не доступна для чтения или изменения с помощью JavaScript. Это делает ее более безопасной, так как предотвращает злоумышленников получение или изменение токенов. Также, использование http only cookie помогает защитить токены от кросс-сайтового скриптинга (XSS).
Вот пример кода для получения и установки http only cookie:
Получение cookie:
```javascript
const getCookie = (name) => {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
};
const accessToken = getCookie('access_token');
const refreshToken = getCookie('refresh_token');
```
Установка cookie:
```javascript
const setCookie = (name, value, days) => {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
const expires = `expires=${date.toUTCString()}`;
document.cookie = `${name}=${value}; ${expires}; path=/; secure; HttpOnly`;
};
setCookie('access_token', 'your_access_token_here', 7); // установка access token на 7 дней
setCookie('refresh_token', 'your_refresh_token_here', 30); // установка refresh token на 30 дней
```
Обратите внимание, что в приведенном выше коде, устанавливаются значения secure и HttpOnly для обеспечения безопасности cookie. Secure гарантирует, что cookie будут отправляться только через HTTPS, а не обычный HTTP протокол.
Кроме того, чтобы сохранить ваши токены безопасными, убедитесь, что ваш сервер настроен на защищенную передачу данных по протоколу HTTPS. Это поможет предотвратить перехват или изменение токенов злоумышленниками.