|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
Spring Security жизнь после авторизации07.10.2016, 16:25. Показов 6317. Ответов 22
Метки нет (Все метки)
Добрый день.
Использую Spring Security. Авторизация проходит успешно. Использую БД. ЕСть таблица юзеров. Каждому юзеру принадлежат какие либо данные в разных таблица, т.е. у каждой строки в других таблицах есть поле с id юзера. А как после авторизацию получать данные в соответствии с юзером. Я раньше при авторизации записывал Id авторизованого юзера и отправлял на страницу, и при какждом запросе возвращал этот id обратно на сервер для запросов в базу и с ответом обратно на страницу. Т.е. как бы клал в сессию. Правильно ли так делать и как можно еще?
0
|
|
| 07.10.2016, 16:25 | |
|
Ответы с готовыми решениями:
22
Spring Security. После авторизации некоректно отображает страницу Spring security, кастомная страница авторизации Существует ли security struct или wicket для регистрации и авторизации пользователей, как в spring? |
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 07.10.2016, 17:35 | |
|
werrt, данные об авторизованном юзере храняться в SpringSecurityContext и его можно получить примерно так
Authentication auth = SecurityContextHolder.getContext().getAu thentication(); затем вы можете из БД вытащить всю нужную вам информацию.
1
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 07.10.2016, 18:03 [ТС] | |
|
Т.е. потом aut.getPrincipal() откуда вытащить Login. И дальше из базы по логину получаем ID юзера, и данные по ID?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 07.10.2016, 18:07 | |
|
werrt, это уже от архитектуры вашего приложения зависит. Обычно Principal это объект User.
1
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 07.10.2016, 18:23 [ТС] | |
|
у меня эта строка в консоль выводит
org.springframework.security.core.userde tails.User@364492: Username: test; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER Но этот обьект к моей энтити юзер не привести. Так как же получить внутренности этого обьекта? Добавлено через 7 минут если только так org.springframework.security.core.userde tails.User user = (User) authentication.getPrincipal(); user.getUsername(); правильно?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||
| 07.10.2016, 19:07 | ||
|
0
|
||
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 07.10.2016, 19:14 [ТС] | |
|
но этоже не мой USER (в котором есть ID ), а какой то спринговский User(org.springframework.security.core.u serdetails.User)
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 07.10.2016, 19:24 | |
|
werrt, это потому что вы так архитектуру построили. Обычно берут своего юзера и дают ему интерфейс UserDetails спринговский.
0
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 07.10.2016, 22:48 [ТС] | |
|
Добавлено через 35 минут
т.е. своим юзером имплеменчю UserDetails. В одном из имплеменченых методов UserDetails пишу код получения ID из базы по логину например. Потом где нужно привожу к своему юзеру (User) authentication.getPrincipal(). Так ? Добавлено через 3 минуты не, судя по всему не так ![]() Добавлено через 2 часа 23 минуты KEKCoGEN, плиз подскажи по поводу "дают ему интерфейс UserDetails спринговский"
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 07.10.2016, 23:40 | |
|
werrt, ваш класс User должен имплементировать спринговский интерфейс UserDetails
1
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|
| 07.10.2016, 23:49 [ТС] | |
|
ок. а что мне это дает, и что делать дальше ?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 08.10.2016, 09:09 | |
|
werrt, в вашем случае это дает вам ID юзера чтобы не ходить лишний раз в БД. В общем случае это дает использовать ваш объект юзера по всей системе. Это удобнее чем использовать юзера спринга. Что делать дальше странный вопрос. Что хотите, то и делайте)
0
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|||||||||||
| 08.10.2016, 10:51 [ТС] | |||||||||||
|
Дальше в смысле, то после имплементации он же не будет в SecurityContextHolder. Т.е. нужно еще что то сделать
![]()
и есть также DAO который ходит в базу:
0
|
|||||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||
| 08.10.2016, 13:34 | ||
|
Конечно если у вас нет сервис слоя и ваши ДАО объекты содержат логику, придется имплементировать там, но это не совсем верно.
0
|
||
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
|||||||||||||||||||||||||||||||
| 08.10.2016, 16:00 [ТС] | |||||||||||||||||||||||||||||||
|
мои нстройки Security и сам бин UserDetailsService
мой CustomUserDetails:
мой controller:
0
|
|||||||||||||||||||||||||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||||||||
| 08.10.2016, 16:37 | ||||||||
Сообщение было отмечено werrt как решение
Решение
werrt,
2
|
||||||||
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
||||||||||||||||||||||||||||||||||||
| 08.10.2016, 20:59 [ТС] | ||||||||||||||||||||||||||||||||||||
|
так, немного осознал и переписал:
мой user
сервис где я получаю User по логину
бин для конфига Секюрити
и контролер в котором мне нужно получить ID Usera
Но получить id так и не смог, при приведение к user в контролере ошибка cast exeption. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Добавлено через 1 час 22 минуты Наконец сделал, вдруг кому пригодится нужно всетаки добавить еще класс, не знаю может и без него можно как то, пока не придумал
CustomUserDetails user = (CustomUserDetails) SecurityContextHolder.getContext().getAu thentication().getPrincipal(); и немного переписать UserServiceDetailIml:
))
0
|
||||||||||||||||||||||||||||||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 08.10.2016, 21:16 | |
|
werrt, почему бы просто не написать как я выше посоветовал? У вас тут лишние классы и сервисы.
0
|
|
|
4 / 4 / 4
Регистрация: 07.02.2008
Сообщений: 361
|
||||||
| 09.10.2016, 00:38 [ТС] | ||||||
|
KEKCoGEN, да уверен вы правы, просто пока пытался понять как и что работает размазал по доп классам , чтобы самому было понятнее. Потом конечно отрефакторю все лишнее. Спасибо
![]() Добавлено через 2 часа 57 минут KEKCoGEN, а если я все таки буду использовать конфиг через JdbcDaoImpl
Была идея просто создать класс наследник JdbcDaoImpl, где вытащить Userа, но что то не получается.
0
|
||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 09.10.2016, 08:52 | |
|
werrt, я с JdbcDaoImpl не работал. хз что это за класс
0
|
|
| 09.10.2016, 08:52 | |
|
Помогаю со студенческими работами здесь
20
Jetty embedded + Spring MVC + Spring Security Spring. Тесты и Spring-security Spring Security Spring security Spring security c 3 на 4 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|