【问题标题】:JSF Controller ignores @RolesAllowed annotationJSF 控制器忽略 @RolesAllowed 注释
【发布时间】:2015-04-30 14:07:12
【问题描述】:

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

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

【问题讨论】:

  • JSF 只有一个控制器 FacesServlet。您在应用程序中创建和使用的所有其他托管 bean 本质上都是模型。他们不是控制者。您可以通过将托管 bean 转换为 EJB 来使用这些注释,但毕竟这不是必需的。在 Web 层,页面级的声明式安全性就足够了。

标签: jsf jakarta-ee jsf-2 cdi


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2010-10-10
    • 2017-06-24
    • 2010-10-17
    • 1970-01-01
    • 2016-05-22
    • 2021-05-11
    • 2011-11-13
    • 2012-07-16
    • 2011-09-15
    相关资源
    最近更新 更多