メソッドへのアクセスを、特定のロールを持つユーザーのみに制限する必要があります。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」ロールを持っていない場合、メソッドが実行されないようにしたい。