Как сразу включить полномочия после полномочий пользователя обновления в пружинной безопасности?

Попробуйте использовать другой кабель или USB-порт - Другой USB-порт исправил это для меня, и пришла идея найти этот пост в Твиттере: [Tweet Gone]

21
задан skaffman 18 May 2011 в 10:03
поделиться

2 ответа

Поскольку вы не совсем точно предоставили подробности в своем вопросе, я предполагаю, что у вас есть ситуация, когда:

  1. Вы предоставляете UserDetailsService для загрузки UserDetails, когда пользователь пытается для входа в систему
  2. В рамках этой службы вы запрашиваете базу данных / DAO для загрузки сведений о разрешениях пользователя и устанавливаете предоставленные полномочия на основе этого
  3. . Когда вы говорите: «Когда я обновляю разрешения "вы имеете в виду обновление разрешений пользователя в базе данных (или там, где вы храните данные).

Если это так, то то, что вы видите, является дизайном - Spring Security загружает UserDetails только в первый раз, когда они пытаются войти в систему, а затем сохраняют его в сеансе. Обычно это имеет смысл, так как это избавляет приложение от необходимости выполнять одни и те же запросы о данных пользователя по каждому запросу. Кроме того, разрешения пользователя обычно не меняются на протяжении 99,9% их посещений.

Чтобы изменить это поведение, вы можете захотеть добавить где-нибудь команду / страницу «обновить», которая запускает некоторый код (который вам придется write), который повторно запросит UserDetailsService и заменит UserDetails в SecurityContext. Я не верю, что есть какой-то встроенный способ сделать это.

команда / страница где-нибудь, которая вызовет некоторый код (который вам нужно будет написать), который повторно запросит UserDetailsService и заменит UserDetails в SecurityContext. Я не верю, что есть какой-то встроенный способ сделать это.

команда / страница где-нибудь, которая вызовет некоторый код (который вам нужно будет написать), который повторно запросит UserDetailsService и заменит UserDetails в SecurityContext. Я не верю, что есть какой-то встроенный способ сделать это.

1
ответ дан 29 November 2019 в 22:07
поделиться

Вы можете создать свою собственную реализацию интерфейса UserDetails, который возвращается из вашего механизма аутентификации, который разрешает доступ к GrantedAuthorities []. Затем добавьте свои новые права доступа непосредственно к этому объекту UserDetails. Вы можете столкнуться с проблемами, если у пользователя может быть открыто несколько сеансов одновременно (или если несколько пользователей используют один и тот же общий логин), новые разрешения будут видны только в сеансе, который вы изменили.

0
ответ дан 29 November 2019 в 22:07
поделиться
Другие вопросы по тегам:

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