2016-05-25 5 views
0

Я использую JAX-RS, и у меня есть служба отдыха, которую я хотел бы защитить с помощью shiro basic auth. В настоящее время у меня есть класс, который расширяет приложение в соответствии с спецификацией Servlet 3, и все работает нормально. Кажется, я не могу заставить базовый auth фильтр Shiro работать, и поскольку у меня нет web.xml, он не позволит мне добавить цепочку фильтров. Есть ли способ программно добавить фильтр в мой подпроцесс приложения?Использование фильтров Shiro на JAX-RS без Web.xml

ответ

2

Вы можете добавить веб-дескриптор в свое приложение. Согласно спецификациям Servlet 3.0, web.xml является необязательным и просто расширяет и/или отменяет вашу конфигурацию аннотации.

Затем вы можете определить фильтр Сиро в вашем web.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> 

Если это не вариант для вас, и вы не хотите web.xml возникнуть в вашем приложении, вы можете также простираться от ShiroFilter класса и предоставить свои собственные конфигурации аннотаций, чтобы получить Shiro фильтр прикован :

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

Я не тестировал этот код выше, это всего лишь подход.

 Смежные вопросы

  • Нет связанных вопросов^_^