JSF 控制器忽略@RolesAllowed 注释

JSF Controller ignores @RolesAllowed annotation

我有一个像这样命名和 SessionScoped 的 JSF 控制器

import javax.inject.Named;
import javax.enterprise.context.SessionScoped;

@Named
@SessionScoped
public class SomeController {
...

向控制器添加@RolesAllowed 或@DenyAll 无效。当此控制器调用具有 @RolesAllowed 注释的 EJB 时,它会在这些 bean 调用上正常工作。

我正在使用 jsf 2.2 并将我的应用程序部署到 Wildfy 8.1

这是因为 @RolesAllowed@DenyAll 在 EJB 上处于活动状态,而不是在 CDI 托管 Bean 上。尝试将您的控制器转换为 CDI 会话 bean。

@Named
@SessionScoped
@Stateful
public class SomeController {
...
}

您应该能够在其上添加安全注释,因为您将拥有一个具有 EJB 和 CDI 功能的组件。