我必须将方法的访问权限仅限制为具有特定角色的用户。
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) {

        ...
        ...
    }
}


问题是AccessDeniedExceptionSecurityExceptionHandler类正确抛出并捕获了,但是方法saveUserChanges()仍然被执行。

这样对吗?我希望如果用户不具有“ tt”角色,则不再执行方法saveUserChanges()

最佳答案

您是否注释了saveUserChanges()完成后失败的其他功能?您使用UserController@Logged注释,以便至少登录的人可以执行您的所有功能,并且您的@RolesAllowed注释根本无法使用。

10-07 16:58