java - 在没有 Web.xml 的 JAX-RS 上使用 Shiro 过滤器

标签 java web-services rest shiro

我正在使用 JAX-RS,并且我有一个休息服务,我想使用 shiro basic auth 来保护该服务。我目前有一个根据 Servlet 3 规范扩展应用程序的类,并且一切运行良好。我似乎无法让 Shiro 基本身份验证过滤器工作,并且由于我没有 web.xml,它不会让我在那里添加过滤器链。有没有办法以编程方式在我的应用程序子类中添加过滤器?

最佳答案

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

然后,您可以像往常一样在 web.xml 中定义 Shiro 过滤器,并且 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>

如果这不适合您并且您不希望 web.xml 在您的应用程序中出现,您还可以从 ShiroFilter 类扩展并提供您自己的注释配置以获得Shiro 过滤器链接:

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

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

关于java - 在没有 Web.xml 的 JAX-RS 上使用 Shiro 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37439494/

相关文章:

java - 单击时复制子 JFrame

java - 如何在 Java Web 服务上接收 SOAP XML

web-services - 具有自定义绑定(bind)的 WCF REST 服务的 SSL 配置

java - Jackson & Jettison 在 Jersey 的使用

Java内存模型: compiler rearranging code lines

java - 与 Guice 0 耦合获取多个新实例

Java 应用程序显示大量图表和统计数据,存储数据?

java - 向特定服务发送 SOAP 请求

php - 如何从 rest api 回调调用中获取响应

c++ - 使用 C++ REST SDK (Casablanca) 的 Http_client post 请求