170 похожих чатов

Подскажите, пожалуйста, по JWT аунтификации. Как лучше аунтифицировать пользователя при SSR? Если

access токен у нас хранится в памяти приложения, а refresh - в куках.
Хорошо, ли валидировать по refresh токену? И тогда при каждом запросе его, наверное, логично продлять. Либо при каждом рендеренге на сервере просто создавать новый? Но тогда нужно всегда обращаться к базе, чтобы его обновить.

39 ответов

19 просмотров

Что имеется в виду под "валидировать по рефреш"?

Pavel- Автор вопроса
Алексей Попов
Что имеется в виду под "валидировать по рефреш"?

Проверять jwt. Валидный или нет. Т.е. аунтифицировать другими словами.

Pavel
Проверять jwt. Валидный или нет. Т.е. аунтифициров...

Аутентификация и авторизация происходят по access токену. Если для этого используется рефреш, то это называется "сессия", и никакой нужды в jwt нет

Pavel- Автор вопроса
Алексей Попов
Что имеется в виду под "валидировать по рефреш"?

При ssr мы ведь не можем получить access токен, который хранится в памяти, только есть refresh, который есть в куках.

Pavel- Автор вопроса
Алексей Попов
Аутентификация и авторизация происходят по access ...

а как тогда быть имея jwt аунтификацию и SSR и стороне сервера + api для получения данных?

Pavel
При ssr мы ведь не можем получить access токен, ко...

Если при SSR не происходит ни одного запроса на бэк апи с jwt, то разве что можно посоветовать добавить какой-нибудь ping апи

Pavel- Автор вопроса

Есть у меня страница профиля например. И есть jwt на клиенте, ревереш и аксесс токены. Также у меня есть ревереш в базе данных. Пользователь переходит на URL /profile/. Здесь я бы хотел сделать рендеринг на стороне сервера, в противовес тому, что можно было отобразить скелетон, дождаться запросов от апи, рендера у клиента и т.д. Как мне на сервере понять, что этот пользователь тот за кого себя выдает, чтобы достать для него нужные данные и отредерить их на сервере?

Алексей Попов
Аутентификация и авторизация происходят по access ...

А как получается, что если есть access, то refresh не нужен? Вроде как используя refresh обновляется access же

Pavel
Есть у меня страница профиля например. И есть jwt ...

Это изначально неправильный подход. SSR нужен только для SEO. Профиль пользователя Гуглу не нужен 😂

Pavel- Автор вопроса
Lukaš 🇷🇸
А как получается, что если есть access, то refresh...

просто на сервере я ведь не могу получить access, правильно? Access хранится на клиенет в памяти приложения. И нужен для получения данных. Это короткоживущий токен. Как только он истечет, я по ревреш токену получу новую пару.

Lukaš 🇷🇸
А как получается, что если есть access, то refresh...

Рефреш нужен для обновления access. Вот когда access истекает, нужен refresh

˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Это изначально неправильный подход. SSR нужен толь...

ты што! SSR новая веха во вротенде! блезингли фаст!

Pavel- Автор вопроса
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Это изначально неправильный подход. SSR нужен толь...

возможно вы правы, гуглу точно не нужен. Но возможно нужен пользователю. Как по мне, куда приятней сразу видеть весь интерфейс, чем целое пустое окно скелетона. Экран моргает из-за перерендеров, не понятно что происходит. UI или как это правильно UX, как по мне не очень хороший.

Pavel- Автор вопроса
Евгений Кондобаров
проверить токен пользователя...

Какой токен? ВОт я и спрашиваю, аксесс я получить не могу. Могу только ревреш из кук достать.

Pavel
Какой токен? ВОт я и спрашиваю, аксесс я получить ...

Почему не можете? Что мешает отправить токен на сервер вместе с запросом? Собственно, всегда же так и делается, и токен ровно для этого и нужен

Pavel- Автор вопроса
Алексей Попов
Зачем вам jwt?

Мне нужно аунтифицировать пользователя. Я бы сделал на сессиях, но говорят, что эта история имеет больше минусов, чем плюсов, по отношению к оwt аунтификации. Масштабировани, CSFR атаки. Плюс если тот же редис отъедит, то все пользователи останутся незалогиненными и т.д.

Pavel- Автор вопроса

Потому что я могу проверить его подпись и вытащить оттуда user id

Наоборот, сессии проще и имеют меньше недостатков, чем jwt. С jwt не получится разлогинивать пользователей

Pavel
Какой токен? ВОт я и спрашиваю, аксесс я получить ...

ты пишешь " И есть jwt на клиенте, ревереш и аксесс токены.", акцесс-токен суёшь на бек, он тебе данные пользователя даёт в ответ, стейт в приложении меняешь isAuth = true; С таким стейтом можешь показывать ему "защищённый маршрут" aka "protected route".

Pavel- Автор вопроса
Алексей Попов
Наоборот, сессии проще и имеют меньше недостатков,...

Холиварная тема. Проще сделать блэклист в редиске туда заносить аксессы короткоживущие, например если вам критично время жизни 15 минут. И это все равно быстрее искать по разлогиненным акссессам, чем по полной базе всех сессий. Плюс больше в том, что даже если редис упадет, ну и бог с ними с этими акссессами, которых несколько штук. А вот если на сессиях делать - у вас все юзеры отвалятся.

Pavel
возможно вы правы, гуглу точно не нужен. Но возмож...

> Экран моргает из-за перерендеров, не понятно что происходит Почините фронт, а не насилуйте SSR

Pavel- Автор вопроса
Евгений Кондобаров
ты пишешь " И есть jwt на клиенте, ревереш и аксес...

Это когда я обрщаюсь к апи, тут вопросов нет. А если я хочу на сервере отрендирить страничку для пользователя, например /profile/. Что мне нужно проверить, чтобы понять, что он это он и что делать с токенами?

Pavel
Холиварная тема. Проще сделать блэклист в редиске ...

Сессии можно в бд хранить, не обязательно в редисе. Если бд отвалилась - ну сорян, тут уже мало что можно сделать Но в любом случае, даже если использовать jwt, как только рефреш становится носителем информации, сразу можно смотреть на предмет того, что пошло не так А в вашем вопросе всё ещё хуже: подразумевается использование рефреш как аксесс

Pavel- Автор вопроса
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
> Экран моргает из-за перерендеров, не понятно что...

SSR приятнее, ты получаешь все и сразу. А без SSR ты получаешь пустые слоты, которые никакой смысловой нагрузки не несут.

Pavel
SSR приятнее, ты получаешь все и сразу. А без SSR ...

У вас мало клиентов с мобильных устройств

Pavel- Автор вопроса
Алексей Попов
Сессии можно в бд хранить, не обязательно в редисе...

Я потому и спрашиваю. Как тут можно поступить, потому что не знаю, как правильно.

Pavel
SSR приятнее, ты получаешь все и сразу. А без SSR ...

Фейсбук и Твиттер не парятся из-за пустых слотов при медленном интернете

Pavel- Автор вопроса
Алексей Попов
У вас мало клиентов с мобильных устройств

Мобильки это немного другая история. Посмотрите как отображаются карты в браузере и приложении. Например, циан. В браузере все логает аж жуть, а в приложении, просто приятно пользоваться.

Pavel- Автор вопроса
˸̧̨ ͅBlack Akula˸̧̨ ͅ ̤ ̬̪
Фейсбук и Твиттер не парятся из-за пустых слотов п...

Здесь скорее вопрос вкуса или точнее бизнес задач. Меня больше волнует техническая реализация.

Pavel- Автор вопроса
Алексей Попов
Догадываетесь почему?

НА ум приходит только лишь очевидные вещи, что работают они по-разному.

Pavel
Это когда я обрщаюсь к апи, тут вопросов нет. А ес...

Зависит от твоей реализации. Можешь хранить данные пользователя в стейте, или в куках, и подставлять для рендеринга эти данные. Роут /profile должен быть защищённым. Либо при переходе на него каждый раз проверять токен, делая запрос к апи, опять же смотря что он тебе возвращает.

На эту тему куча материала в интернете есть.

Похожие вопросы

Обсуждают сегодня

Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
Вот еще криповенькая штука. uMain.pas(517,3) Warning: Case statement does not handle all possible cases И ЧО? 😂
Александр (Rouse_) Багель
15
.model small .stack 100h .data a db 'Hello, World!', '$' ; исходная строка b db 20 dup(?) ; строка b с запасом на максимальную длину .code main: ...
Алексей -man
3
вопрос, кого посмотреть в ютубе или где почитать про указатели чтобы раз и навсегда запомнить зачем они нужны и как правильно ими пользоваться? поделитесь хорошими ресурсами, ...
-
14
М-да. Почему бы просто со stringlist не работать?
Michael Longneck
23
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
Редактор листа Excel, по сути двумерный массив ячеек. Ячейка - это экземпляр класса, у нее всякие свойства, методы. Проблема в том, что количество используемых строк и колоно...
Sergey Bodrov
2
Is there a digital way to cut the electricity from a usb in linux? It sounds weird, but it's exactly what I need to do. I tried to simulate the unplug/replug but is not the ...
Eduard Rivas
15
Решаемо? У тебя есть софт собирающийся без хинтов ворнингов?
Александр (Rouse_) Багель
9
Карта сайта