java - @RolesAllowed 无法正常工作

标签 java jboss7.x cdi deltaspike picketlink

我必须将方法的访问限制为仅具有特定角色的用户。 IdentityManager 已正确构建。

我有这个 Controller 类。

@Named
@RequestScoped
@LoggedIn
public class UserController{

    @RolesAllowed({"tt"})
    public String saveUserChanges() {
        ...
        ...
    }
}

该类处理上述 saveUserChanges 方法抛出的 AccessDeniedException

@ExceptionHandler
public class SecurityExceptionHandler {

    public void onAccessDeniedException(@BeforeHandles ExceptionEvent<AccessDeniedException> event) {

        ...
        ...
    }
}

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

是吗?我希望如果用户没有“tt”角色,则不再执行 saveUserChanges() 方法。

最佳答案

您是否注释了在 saveUserChanges() 完成后失败的其他函数?您使用 @Logged 对您的 UserController 进行了注释,以便至少登录的人可以执行您的所有功能,并且您的 @RolesAllowed 注释可能不会执行完全在工作。

关于java - @RolesAllowed 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25384514/

相关文章:

java-ee-6 - 使用 CDI/Weld 注入(inject)通用 Bean

java - c3p0 导致应用程序偶尔超时

java - 获取给定像素 RGB 的 x,y 坐标?

java - 排除模块在 JBoss 7.2.1 中不起作用

jboss7.x - JBoss EAP 6.1 中的 HTTP session 复制

java - CDI - 应用程序范围但已配置

java - 容器中的 JAX-WS 实现与单独的标准应用程序之间的区别

java - 使用 URLConnection 访问时连接超时

maven-ear-plugin 和 JBoss AS 7