Size: a a a

Vue.js Russian Developers Community

2020 August 18

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Victor L
а подскажите плиз норм плагин для vue.js что бы юзер мог рейтиг ставить, обычные звездочки пробовал stars-rating-component-vue но он не работает в продакшене только в деве
А не проще такой компонент самому написать? Он же совсем простой
источник

РМ

Рафаил Мамедов... in Vue.js Russian Developers Community
Grigorii K. Shartsev
Дисклеймер: я теоретически рассуждаю, ssr не делаем.

Нет, схема не такая. Сервер работает ровно также, как клиент.

Не надёжнее, а так, чтобы он был доступен клиенту (чтобы он его в заголовок засунул), но при этом не доступен для всех, кто получил доступ к JS. Т.е. в замыкании. Мне не нравится вариант открытого хранения аксесса.

А ещё, если всё хранить в куках, то появляются все проблемы сессий с CSRF
Спасибо за ответ) но я все равно не могу сложить все ваши мысли вместе
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Рафаил Мамедов
Спасибо за ответ) но я все равно не могу сложить все ваши мысли вместе
Вы предлагаете хранить токен в общей куке, так?
источник

РМ

Рафаил Мамедов... in Vue.js Russian Developers Community
Grigorii K. Shartsev
Вы предлагаете хранить токен в общей куке, так?
необязательно общей, но что-то нужно хранить в куках, если нужен ssr
у если не юзать ssr, то окей можно не юзать куки вообще

тут лучше на 2 части разделить разговор (есть SSR и нет)
вот сначала есть есть, то где хранить access и refresh, я предлагал access в куках, refresh в ls, так как не вижу других адекватных вариантов


если SSR нет, то вы предлагаете вообще не хранить access вообще, а только инициировать его в инстансе, а хранить только refresh, чтобы при первой инициализации аппки получить новый access и засунуть его в конфиг http клиента. Окей, логично, но тогда не совсем ясно, что значит получать контент по refresh, если по по refresh можно получить контент, то зачем тогда нужен access?
источник

РГ

Расулходжа Ганиев... in Vue.js Russian Developers Community
Grigorii K. Shartsev
jwt имеет смысл, когда:
- микросервисная или аналогичная архитектура, при которой надо слать с фронта запросы на разные домены
- микросервисная или СО архитектура, при которой запрос обрабатывается множеством сервисов, которые хочется иметь stateless, либо не связывать с сервисом авторизации
- у бека есть не веб фронт типа мобилок, и не хочется там париться с куками
у нас микросервис, и скорее всего руководство принял такое решение
я так понял то что рефреш токен нужно хранить в httpOnly так?
источник

РГ

Расулходжа Ганиев... in Vue.js Russian Developers Community
Grigorii K. Shartsev
Дисклеймер: я теоретически рассуждаю, ssr не делаем.

Нет, схема не такая. Сервер работает ровно также, как клиент.

Не надёжнее, а так, чтобы он был доступен клиенту (чтобы он его в заголовок засунул), но при этом не доступен для всех, кто получил доступ к JS. Т.е. в замыкании. Мне не нравится вариант открытого хранения аксесса.

А ещё, если всё хранить в куках, то появляются все проблемы сессий с CSRF
нет, по ходу я не правильно понял
тогда вопрос остается открытым
как и где хранить эти токены?
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Рафаил Мамедов
необязательно общей, но что-то нужно хранить в куках, если нужен ssr
у если не юзать ssr, то окей можно не юзать куки вообще

тут лучше на 2 части разделить разговор (есть SSR и нет)
вот сначала есть есть, то где хранить access и refresh, я предлагал access в куках, refresh в ls, так как не вижу других адекватных вариантов


если SSR нет, то вы предлагаете вообще не хранить access вообще, а только инициировать его в инстансе, а хранить только refresh, чтобы при первой инициализации аппки получить новый access и засунуть его в конфиг http клиента. Окей, логично, но тогда не совсем ясно, что значит получать контент по refresh, если по по refresh можно получить контент, то зачем тогда нужен access?
1. Ни разу не видел, чтобы хранили access в куках, refresh в ls.

access — точно нужен с доступом из JS (если шлём в хедере), значит он не может быть в безопасной (httpOnly) куке.
refresh — нужен только для получения access, он не нужен в JS.

Вы предлагаете вариант, где оба токена доступны вместе из JS. Т.е. если до них доберутся, то сразу до двух. К рефрешу не должен быть доступ из JS

2. Я нигде не говорил получать контент по рефреш. По рефреш можно получить аксесс, а по аксесс уже контент.
Т.е. на SSR всё работает ровно также, как на клиенте.
Но это теоретическая идея, я так не пробовал и не видел, что делали.
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Расулходжа Ганиев
нет, по ходу я не правильно понял
тогда вопрос остается открытым
как и где хранить эти токены?
На сколько я знаю, по поводу хранения рефреша в httpOnly есть консенсунс
источник

РМ

Рафаил Мамедов... in Vue.js Russian Developers Community
Расулходжа Ганиев
нет, по ходу я не правильно понял
тогда вопрос остается открытым
как и где хранить эти токены?
если реально не нужен SSR и нет задачи оптимизировать первый запрос, который будет запрашивать защищенный контент, то вариант у Grogorii хороший
акцес нигда не хранить, а refresh в http only куках, чтобы до него было не добраться из клиентского js в случае внедрения
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Рафаил Мамедов
если реально не нужен SSR и нет задачи оптимизировать первый запрос, который будет запрашивать защищенный контент, то вариант у Grogorii хороший
акцес нигда не хранить, а refresh в http only куках, чтобы до него было не добраться из клиентского js в случае внедрения
Внезапно, первая ссылка по запросу "JWT on SSR" в DDG предлагает как раз мой вариант :D
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
источник

РГ

Расулходжа Ганиев... in Vue.js Russian Developers Community
@ShGKme @rafail_mamedov
вот как я делал
источник

РМ

Рафаил Мамедов... in Vue.js Russian Developers Community
ну это шото вообще беда, какая еще манипуляция с LS в мутациях
источник

GS

Grigorii K. Shartsev in Vue.js Russian Developers Community
Я полностью согласен с этой статьёй (нашёл только что).
Она про gql, но это тут не важно
https://hasura.io/blog/best-practices-of-using-jwt-with-graphql
источник

РГ

Расулходжа Ганиев... in Vue.js Russian Developers Community
Рафаил Мамедов
ну это шото вообще беда, какая еще манипуляция с LS в мутациях
меня к этому и научили 🙊🙈
источник

РМ

Рафаил Мамедов... in Vue.js Russian Developers Community
Grigorii K. Shartsev
На сколько я знаю, по поводу хранения рефреша в httpOnly есть консенсунс
соглашусь, что  refresh в LS не надо, спасибо.
источник

РМ

Рафаил Мамедов... in Vue.js Russian Developers Community
Расулходжа Ганиев
меня к этому и научили 🙊🙈
точно не, мутации для «мутаций» данных в store
если нужно выполнить что-то вместе с мутацией, то вероятно нужно action вызвать, там сделать это «что-то» и необходимую мутацию
источник

KA

Kenan Ayvazov in Vue.js Russian Developers Community
Ты можешь сразу указать в инстансе axios токен, который достаешь из LS
источник

KA

Kenan Ayvazov in Vue.js Russian Developers Community
Он будет у тебя каждый запрос дёргаться
источник

РГ

Расулходжа Ганиев... in Vue.js Russian Developers Community
Kenan Ayvazov
Он будет у тебя каждый запрос дёргаться
где то тут?
источник