Безопасное управление токенами — ключевой аспект при разработке современных веб-приложений. В контексте Quasar Framework важно учитывать, что библиотека сама по себе не обеспечивает встроенного безопасного хранилища для токенов, поэтому разработчик должен применять проверенные методы хранения и защиты данных.
Токены доступа (access tokens) и токены обновления (refresh tokens) используются для аутентификации и авторизации пользователей. Основные риски при хранении токенов:
localStorage и sessionStorage делает токен
доступным для любого скрипта на странице.HttpOnly,
Secure и SameSite.import { Cookies } from 'quasar'
Cookies.set('access_token', token, {
httpOnly: true,
secure: true,
sameSite: 'Strict',
path: '/'
})
localStorage.// store/auth.js
export const state = () => ({
token: null
})
export const mutations = {
setToken(state, token) {
state.token = token
},
clearToken(state) {
state.token = null
}
}
localStorage возможно при его шифровании.import CryptoJS from 'crypto-js'
// Шифрование
const encrypted = CryptoJS.AES.encrypt(token, 'секретный_ключ').toString()
localStorage.setItem('token', encrypted)
// Дешифрование
const bytes = CryptoJS.AES.decrypt(localStorage.getItem('token'), 'секретный_ключ')
const decrypted = bytes.toString(CryptoJS.enc.Utf8)
Для безопасной работы с токенами удобно использовать перехватчики (interceptors):
import axios from 'axios'
import { Cookies } from 'quasar'
const api = axios.create({
baseURL: 'https://api.example.com'
})
// Добавление токена к запросу
api.interceptors.request.use(config => {
const token = Cookies.get('access_token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
// Обработка обновления токена при ошибке 401
api.interceptors.response.use(
response => response,
async error => {
if (error.response.status === 401) {
// логика обновления токена через refresh-token
}
return Promise.reject(error)
}
)
Quasar позволяет подключать плагины для упрощения работы с куками и хранилищем:
Безопасное хранение токенов требует комбинированного подхода: правильные куки, ограничение доступа через JavaScript, шифрование и контроль на серверной стороне. Это снижает риск компрометации и повышает общую защищённость приложения.