2

我必须将方法的访问权限仅限于具有特定角色的用户。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”角色,我希望不再执行该方法。

4

1 回答 1

0

您是否注释了其他在saveUserChanges()完成后失败的功能?您UserController使用@Loggedin 注释了您的注释,因此至少登录的人都可以执行您的所有功能,并且您的@RolesAllowed注释可能根本不起作用。

于 2014-08-25T22:22:32.077 回答