我想知道如何实现像使用这个@WebFilter注释
这样的行为@WebFilter(
urlPatterns = "/*",
filterName = "AuthenticationFilter",
description = "Filter all URLs"
,
initParams = {
@WebInitParam(name = "unprotectedUrls", value = "/,/login,/authentication,/notification,/sdr")})
public class AuthenticationFilter implements Filter {
...}
(效果很好,这意味着我不必仅为列出的路径登录,而是必须登录所有其他路径)... 通过使用< filter> web.xml中的元素。
在web.xml中使用此过滤器:
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>com.foo.bar.helper.AuthenticationFilter</filter-class>
<init-param>
<param-name>unprotectedUrls</param-name>
<param-value>/,/login,/authentication,/notification,/sdr</param-value>
</init-param>
</filter>
无法识别这意味着我不必为所有路径/ URL登录。没有过滤。
我的目的是使init-params可配置,这样只要包含更多的URL,我就不必编辑代码/类。
答案 0 :(得分:3)
您只定义了过滤器,但尚未映射过滤器。 NExt到filter
元素,您还需要一个filter-mapping
元素来将过滤器映射到网址,这基本上取代了urlPatterns
@WebFilter
属性
<filter-mapping>
<filter-name> AuthenticationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>