@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 аннотация не работает вообще.

Другие вопросы по тегам