Spring Security 3: сбой доступа на уровне метода - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть безопасность на уровне URL в помещенном месте, а также на уровне метода.Но моя безопасность на уровне метода обходится, когда пользователь прошел аутентификацию на уровне URL!Я рассмотрел этот вопрос далее, и кажется, что следующая защита на уровне URL:

intercept-url pattern="/**" access="ROLE_USER"

переопределит любую защиту уровня моего метода (например, фрагмент кода ниже).

@PreAuthorize("hasRole('ROLE_SUPERVISOR')")
public String supervisorRoleOnly() 
{ 
     return "success!!!" ;
}

Я бы подумал, что этот метод выдаст ошибку отказа в доступе, но нет, любой ROLE_USER может получить доступ к этому методу, как только они уже аутентифицированы на уровне URL.

У меня есть это вмой security-config.xml:

<global-method-security pre-post-annotations="enabled" >
    <expression-handler ref="expressionHandler"/>
</global-method-security>

Чего мне не хватает?

1 Ответ

0 голосов
/ 11 июля 2011

Полагаю, это в большей степени относится к будущим читателям, но при настройке ведения журнала отладки для Spring Security вы видите что-то похожее на следующее:

Looking for Pre/Post annotations for method 'supervisorRoleOnly' on target class 'yourClassName'
No expression annotations found
Adding security method [CacheKey[yourClassName; public yourReturnType yourClassName.supervisorRoleOnly()]] with attributes [ROLE_USER]

PreAuthorize, вероятно, игнорируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...