我必须将方法的访问权限仅限制为具有特定角色的用户。
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()
仍然被执行。这样对吗?我希望如果用户不具有“ tt”角色,则不再执行方法
saveUserChanges()
。 最佳答案
您是否注释了saveUserChanges()
完成后失败的其他功能?您使用UserController
为@Logged
注释,以便至少登录的人可以执行您的所有功能,并且您的@RolesAllowed
注释根本无法使用。