1

我在环境中的某个位置有一个 html 文件,我需要限制所有用户访问该文件。所以我只是想添加一个过滤器并限制 html 页面或将其重定向到另一个页面。这是我正在使用的代码,

<filter>
    <filter-name>PageCheckFilter</filter-name>
    <filter-class>com.src.filter.PageCheckFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>PageCheckFilter</filter-name>
    <url-pattern>/app?asset=test&path=/xyz-0.1.2/page.html</url-pattern>
</filter-mapping>

我尝试了许多 URL 模式来匹配这个 URL,但都是徒劳的。请给我一些建议,以便我可以限制此页面的访问。

4

2 回答 2

1

您不能在过滤器映射中包含查询参数!根据servlet 规范,用于映射的 URL 路径是请求 URL 减去上下文路径和参数(参见第 12.1 章 - 使用或 URL 路径)。因此,查询字符串在映射到您的模式之前从 URL 中删除。

即使您的映射中可能有一个查询字符串,它也只有在查询参数没有重新排序时才有效(例如/app?path=/xyz-0.1.2/page.html&asset=test)。

相反,您应该将您的过滤器映射到所有请求/app并自己分析过滤器中的查询参数!

于 2013-12-29T10:24:46.990 回答
0

你正在做的方式不是实现的正确方式。

你可以做的是编写一个过滤器,该过滤器在正确的身份验证上提供服务器页面。编写一个身份验证过滤器并将您的所有请求映射到该过滤器。

因此,当且仅当有效的用户/客户端请求特定页面时,过滤器才会转发请求。

例如:检查会话中的登录用户与否。

查看过滤器标签信息,您可以找到一个从过滤器开始的好例子。

https://stackoverflow.com/tags/servlet-filters/info

于 2013-12-29T10:22:58.867 回答