2010-01-04 2 views
2

В настоящее время я работаю над защитой веб-приложения с использованием Spring-Security 3.0. Я получил большинство моих проблем, но я попытаюсь лучше понять, что именно я делаю (скопируйте и вставьте FTL).Где я могу найти дополнительную информацию об аннотациях весны-безопасности

Я смотрел this video, в котором он заявил, что @Secured больше не должен использоваться, кроме определенных ситуаций. Он также показывает список аннотаций и методов, которые могут быть использованы (около 44:50), но не объясняет их. Он просто показывает, что они используются. Поэтому я просмотрел документацию и нашел this. Поэтому я добавляю требуемый код в свой xml-файл, и я пробую @PreAuthorize("hasAuthority('ROLE_ADMIN')"), и он не работает. Затем я понимаю, что hasAuthority - это не метод (благодарю вас за то, что вы меня сбиваете с толку). Я меняю его на @PreAuthorize("hasRole('ROLE_ADMIN')") и VOILA, он работает.

Теперь мне интересно (другое, почему это неправильно), где я могу найти дополнительную информацию о типах и методах до и после аннотации, которые были так хорошо перечислены в презентации? Я попробовал Google, но, возможно, я искал неправильные условия. Также упоминались аннотации JSR250 как правильные, но я также не нашел информации об этом. Неужели мой google сломан или я просто смотрю не в те места?

+0

Это появилось после того, как ваш пост: https://jira.springsource.org/browse/SEC-1583 –

ответ

2

Выражение контроля доступа на основе лучше объяснено в документации here

+0

Я не знайте, как я выглядел прямо над этим. Большое значение. – UmYeah

0

hasAuthority будет работать, если вы поставите <security:http use-expressions="true" … в контексте приложения.

2

Как заявляет Вилли в своем замечании hasAuthority фактически был added как допустимый синтаксис для всех тех, кто хочет использовать его.
Цитирование Люк Тейлор из билета:

Я добавил поддержку hasAuthority() и hasAnyAuthority() выражения для SecurityExpressionRoot.

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

1

Кроме того, убедитесь, что у вас есть до и после аннотации включить в вашем контексте безопасности

<global-method-security pre-post-annotations="enabled"/>