Префикс Spring Security ROLE_ больше не нужен? - PullRequest
6 голосов
/ 29 ноября 2011

Я изучал, как создать собственный префикс роли, пока не понял, что это не имеет значения. Пока моя роль из моего БД совпадает с чем-то вроде:

<security:intercept-url pattern="/person/myProfile/**" access= "hasRole('BlaBla')" />

И это не пример, в БД я буквально установил роль BlaBla для тестирования, и это работает.

Мне не нравится, когда я получаю другое поведение - у многих людей возникла проблема с настройкой собственного префикса для создания пользовательской роли. Что здесь происходит и стоит ли искать скрытые камни?

У меня версия 3.0.7. И в моем запросе к полномочиям у меня нет значений по умолчанию ... Это вызвано версией?

1 Ответ

2 голосов
/ 30 ноября 2011

Возможно, вы используете:

 <http use-expressions="true"> 

, который настраивает WebExpressionVoter, который будет голосовать за пользователей, которым предоставлены полномочия "BlaBla" (в вашем случае)

Помните, что авторизация для защищенного объекта (например, URL) выполняется AccessDecisionManager.

Существует три конкретных AccessDecisionManager: утвердительные, согласованные и единодушные.

Для принятия решений они используют список AccessDecissionVoters.

RoleVoter, тот, который вы ожидали, с настраиваемым rolePrefix (по умолчанию ROLE_), AuthenticatdVoter и новый WebExpressionVoter.

Не забывайте, что комбинация AccessDecissionManager и его Избирателей может разрешить или отклонить разрешение так, как вы думаете, нелогичным.

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

...