启用 CDI 的 shiro 过滤器

Posted

技术标签:

【中文标题】启用 CDI 的 shiro 过滤器【英文标题】:CDI enabled shiro filter 【发布时间】:2019-01-06 09:29:52 【问题描述】:

关于创建启用 CDI 的 shiro 领域的信息已经足够多。就我而言,我需要在自定义 shiro 过滤器中使用 CDI,这可能吗?

public class com.moc.CustFilter 

  @Inject
  private MyUtil myUtil;

  // .... using myUtil


shiro.ini

[main]
custFilter = com.moc.CustFilter

[urls]
/web/** = custFilter

【问题讨论】:

Inject CDI managed bean in custom Shiro AuthorizingRealm的可能重复 【参考方案1】:

过滤器的构造函数中的这段代码对我来说已经足够了

private SomeUtils utils;

public ApisecAuthcFilter() 
    try 
      BeanManager beanManager = (BeanManager) new InitialContext().lookup("java:comp/BeanManager");
      Bean<SomeUtils> utilsBean = (Bean<SomeUtils>) beanManager.resolve(beanManager.getBeans(SomeUtils.class));
      CreationalContext<SomeUtils> creationalContext = beanManager.createCreationalContext(null);
      utils = utilsBean.create(creationalContext);
     catch (NamingException e) 
      throw new SomesException();
    
  

【讨论】:

所以你找到了副本:***.com/questions/18507629/…

以上是关于启用 CDI 的 shiro 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

Apache Shiro 的Web应用支持指南

如何从过滤器中获取 SessionScoped CDI bean?

如何将 bean 注入 Undertow 中的 servlet 过滤器?

shiro原理之过滤器

Shiro源码——shiro提供默认过滤器详解

shiro的过滤器和web服务器的过滤器哪个先调用