Для нашего текущего проекта мы интегрируем JSF и Spring Framework.Я хотел бы использовать Spring Security для обработки аутентификации и авторизации.До сих пор я реализовал пользовательские PasswordEncoder
и AccessDecisionVoter
, которые работают нормально.Сейчас я пытаюсь защитить методы с помощью аннотации @Secured
(среди прочих), но не могу заставить ее работать так, как я ожидаю.
Кажется, что аннотация @Secured
работаеттолько для методов бина, вызываемых непосредственно из уровня JSF.Вот упрощенный пример:
@Named("foobarBean")
@Scope("access")
public class FoobarBean
{
@Secured("PERMISSION_TWO")
public void dummy()
{
}
@Secured("PERMISSION_ONE")
public String save()
{
dummy();
}
}
Метод save () вызывается из слоя JSF следующим образом:
<h:commandButton id="save" action="#{foobarBean.save}" />
Нашему AccessDecisionVoter
затем предлагается проголосовать за PERMISSION_ONE, но не на PERMISSION_TWO.Это работает как задумано (я надеюсь, что нет), или я делаю что-то не так (что это может быть?).
Я бы опубликовал больше кода или конфигурации, но я не уверен, какая часть важна, и я не хочу загромождать этот пост.