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

Вопрос может показаться нубским, поэтому скажите если так. Я хочу сделать

Cookie-based аутентификацию следующим образом:
- Написать собственный token-storage, который будет хранить данные userId:token:expiredAt.
- Написать собственный фильтр, который будет выдёргивать userId из токен-сторейджа, дёргать данные про юзера с базы и посредством UsernamePasswordAuthenticationToken производить аутентификацию.
- Когда пользователь логинится POST {"username","password"}, старый токен должен быть инвалидирован (если есть офк), и вместо него в токен-сторейдж запишется новый токен, а в ответе будет Set-Cookie: X-AUTH-TOKEN=<token>.

1. Собственно, насколько это нормальный вариант? Я в курсе про remember-me и т.п., но мне по определённым причинам не нравится реализация спринга (хочется под себя прям подогнать).
2. Так же: не будет ли тут нарушения архитектуры? С одной стороны токен-сторейдж как зависимость контроллера, с другой стороны — зависимость фильтра.

P.S. Это очень общая концепция.

11 ответов

12 просмотров

>Я в курсе про remember-me и т.п., но мне по определённым причинам не нравится реализация спринга (хочется под себя прям подогнать). Будет очень полезно озвучить эти причины

Alpha-Nerd Автор вопроса
Denis Chikanov
>Я в курсе про remember-me и т.п., но мне по опред...

Можно использовать PersistentTokenRepository, но тогда надо мириться с PersistentRememberMeToken, а мне надо мапить токен на константный идентификатор пользователя, в то время как username может меняться. Плюс, это всё-таки немножно иной флоу: куки записываются сразу по логину, всегда. Помимо кук будет ещё дополнительная логика.

> дёргать данные про юзера с базы и посредством UsernamePasswordAuthenticationToken я правильно понял что ты хочешь вытягивать из базы пароль в чистом виде и логинить его на каждый запрос?

Alpha-Nerd Автор вопроса
Etki
> дёргать данные про юзера с базы и посредством Us...

Нет, он хэширован. Просто заполнять UsernamePasswordAuthenticationToken

Alpha Nerd
Можно использовать PersistentTokenRepository, но т...

Что мешает использовать в токене ид пользователя, а не изменяемый логин? (Ответ: ничего)

Alpha-Nerd Автор вопроса
Alexandr ∨∧‾ Emelyanov
Что мешает использовать в токене ид пользователя, ...

С одной стороны ты прав, с другой стороны... Если поле называется username, то я предпочту туда записывать юзернейм. Но это уже дискуссия совсем иного плана.

Alpha Nerd
С одной стороны ты прав, с другой стороны... Если ...

Какая разница если оно будет лежать глубоко в контексте и использоваться в паре мест?

Alpha-Nerd Автор вопроса
Alexandr ∨∧‾ Emelyanov
Какая разница если оно будет лежать глубоко в конт...

Мне будет некомфортно. Тем более там String, да можно конвертировать, но это вызовет дополнительный дискомфорт.

Alpha-Nerd Автор вопроса

Но в целом, я так понимаю, вариант рабочий?

Alpha Nerd
Мне будет некомфортно. Тем более там String, да мо...

Идентификаторы лучше кроме как строкой и не передавать, даже если в данный момент там выдаваемый базой автоинкремент.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта