powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security как программно сделать re-authorization?
19 сообщений из 19, страница 1 из 1
Spring Security как программно сделать re-authorization?
    #38288198
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация следующая, если пользователю предоставляются дополнительные роли(например, как новая запись в БД), то они не будут видны ему в текущей сессии.
Как сбросить объект authorization/principal. Речь идет не о текущем пользователе, т.е.

Код: java
1.
SecurityContextHolder.getContext().getAuthentication().setAuthenticated(false);



не подойдет.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288375
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 /*Autologin user*/
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user, user.getPassword(),
user.getAuthorities() //здесь добавь новые роли);
SecurityContextHolder.getContext().setAuthentication(token);
        
rememberMeServices.loginSuccess(
                getHTTPServletRequest(), getHTTPServletResponse(),
                token);


// Create a new session and add the security context, without this all above useless
HttpSession session = ...//получи здесь сессию;
session.setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext());
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288387
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha, это для текущего пользователя! А мне надо, для другого.
Например, я пользователь user1, а добавляю я новые роли пользователю user2. Так вот обновить роли надо у пользователя user2, а не у меня.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288392
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно не "убивать" предыдущую авторизацию. Назначить текущей новые права и для AuthenticationProvider (это интерфейс, который наследуют все остальные - DaoAuthenticationProvider, RememberMeAuthenticationProvider) выполнить authenticate().
Ну и если используется rememberMe, то или вызвать метод rememberMeService onLoginSuccess(), или logout().
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288398
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckМожно не "убивать" предыдущую авторизацию. Назначить текущей новые права и для AuthenticationProvider (это интерфейс, который наследуют все остальные - DaoAuthenticationProvider, RememberMeAuthenticationProvider) выполнить authenticate().
Ну и если используется rememberMe, то или вызвать метод rememberMeService onLoginSuccess(), или logout().
Так как назначить новые права и т.д., для другого пользователя, зная к примеру его name?
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288458
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
....ну и ничего страшного, если польз-ль перелогинивается.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288466
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123....ну и ничего страшного, если польз-ль перелогинивается.
Или удалить сессию с его идентификатором, но сути это не меняет. Как это сделать я пока не понимаю.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288501
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmPetro123....ну и ничего страшного, если польз-ль перелогинивается.
Или удалить сессию с его идентификатором, но сути это не меняет. Как это сделать я пока не понимаю.
в смысле?
Как делают Провайдеры интернета например?
- Ты изменил тарифлый план на повышенную скорость. Она изменится тогда когда ты перелогишься.
Вернее IMHO в БД провели галочки, а обновление классов будет автоматом при перелогине.
- Зачем нужно это в динамике и на горячую?
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288520
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123rdmпропущено...

Или удалить сессию с его идентификатором, но сути это не меняет. Как это сделать я пока не понимаю.
в смысле?
Как делают Провайдеры интернета например?
- Ты изменил тарифлый план на повышенную скорость. Она изменится тогда когда ты перелогишься.
Вернее IMHO в БД провели галочки, а обновление классов будет автоматом при перелогине.
- Зачем нужно это в динамике и на горячую?
Допустим, ты как администратор блокируешь пользователя. Он не будет заблокирован, пока не закроет браузер.
Смысл тогда в чем? )
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288562
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdm,
смысл в сабже. А сабж в дополнительной роли. Т.е. расширение полномочий USER2.
Нужно ли тебе усложнять - я не в курсе.
Удачи.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288564
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmДопустим, ты как администратор блокируешь пользователя. Он не будет заблокирован, пока не закроет браузер
тогда пиши сервлет-фильтр и проверяй роли и прочее важное в каждом запросе. придется правда с кэшем помутить, если производительность начнет проседать.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288603
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть решение с использованием SessionRegistry.getAllSessions(Object principal, boolean includeExpiredSessions)
но придется передавать объект заглушку с хэшом, как у объекта principal user2. Насколько это безопасно только.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288627
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
права USER2 могут одновременно править 2 админа USERA\B.
Поэтому я бы не рисковал, а искал способ выгнать его из текущей сессии для таких дел.
IMHO
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288642
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123права USER2 могут одновременно править 2 админа USERA\B.
Поэтому я бы не рисковал, а искал способ выгнать его из текущей сессии для таких дел.
IMHO
SessionRegistry как раз и удалить его сессию.
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288657
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmPetro123права USER2 могут одновременно править 2 админа USERA\B.
Поэтому я бы не рисковал, а искал способ выгнать его из текущей сессии для таких дел.
IMHO
SessionRegistry как раз и удалить его сессию.
http://barbitoff.blogspot.ru/2012/10/spring-security.html
?
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288733
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, да, я этот способ рассматриваю)
Мне смущает необходимость заходить заново)
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288751
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня работает и без фильтров

Код: xml
1.
2.
3.
<session-management>
              <concurrency-control session-registry-alias="sessionRegistry" expired-url="/login"/>
 </session-management>
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288762
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdmМне смущает необходимость заходить заново)
тогда удачи!
Права и роли - это не игрушки с комфортным добавлением в рантайме)
...
Рейтинг: 0 / 0
Spring Security как программно сделать re-authorization?
    #38288776
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, я думал, что при удалении сессии, должно остаться куки remember_me, и используя его значение незаметно для пользователя он перезаходит. Увы!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Security как программно сделать re-authorization?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]