@RolesAllowed не работает должным образом
Я должен ограничить доступ к методу только для пользователей, которые играют определенную роль. IdentityManager построен правильно.
У меня есть этот класс контроллера.
@Named
@RequestScoped
@LoggedIn
public class UserController{
@RolesAllowed({"tt"})
public String saveUserChanges() {
...
...
}
}
И этот класс обрабатывает AccessDeniedException
брошенный по методу выше saveUserChanges
,
@ExceptionHandler
public class SecurityExceptionHandler {
public void onAccessDeniedException(@BeforeHandles ExceptionEvent<AccessDeniedException> event) {
...
...
}
}
Проблема в том, что AccessDeniedException
правильно брошен и пойман SecurityExceptionHandler
класс, но метод saveUserChanges()
выполняется в любом случае.
Это правильно? Я хочу метод saveUserChanges()
больше не выполняется, если у пользователя нет роли "tt".
1 ответ
Вы аннотировали другие функции, которые после сбоя saveUserChanges()
завершается? Вы аннотировали свой UserController
с @Logged
так что, кто бы ни вошел в систему, может выполнить все ваши функции и, возможно, ваш @RolesAllowed
аннотация не работает вообще.