有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在没有Web的JAXR上使用Shiro过滤器。xml

我正在使用JAX-RS,我有一个rest服务,我想使用shiro basic auth来保护它。我目前有一个类,它根据Servlet3规范扩展了应用程序,并且一切运行正常。我似乎无法让Shiro basic auth filter工作,因为我没有网络。xml,它不会让我在那里添加过滤器链。有没有办法通过编程在我的应用程序子类中添加过滤器


共 (1) 个答案

  1. # 1 楼答案

    您可以将web描述符添加到应用程序中。根据Servlet3.0规范,web。xml是可选的,只是扩展和/或覆盖您的注释配置

    然后,您可以在web中定义Shiro过滤器。xml和往常一样,JAX-RS相关的配置将通过注释保持配置状态。这是一种自然的做法

    <filter>
        <filter-name>ShiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
        <init-param>
            <param-name>configPath</param-name>
            <param-value>classpath:shiro.ini</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>ShiroFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    

    如果这不是你的选择,你不想要网络。xml要在应用程序中出现,您还可以从ShiroFilter类进行扩展,并提供自己的注释配置,以便将Shiro筛选器链接起来:

    @WebFilter(initParams = { @WebInitParam(name = "configPath", value = "classpath:shiro.ini") })
    public class MyShiroFilter extends ShiroFilter {
    }
    

    我没有测试上面的代码,这只是一种方法