- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然我似乎有它们的“精确”副本,但我已经阅读了很多示例,所以我无法弄清楚为什么当我导航到 /login
而不是 /时我的过滤器会执行限制/*
。我已尝试使用注释(如下例所示)和 XML 来定义 WebFilter。
网络过滤器
@WebFilter(filterName = "AuthenticationFilter", servletNames = { "Faces Servlet" }, urlPatterns = { "/restricted/*" } )
public class AuthenticationFilter implements Filter {
@Inject
private SessionManager sessionManager;
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("Active AuthenticationFilter");
if (sessionManager.getUser() == null) {
((HttpServletResponse) response).sendRedirect("/login");
}
else {
chain.doFilter(request, response);
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
web.xml
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
<dispatcher>ASYNC</dispatcher>
</filter-mapping>
<filter>
<filter-name>NoCacheFilter</filter-name>
<filter-class>filter.NoCacheFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>NoCacheFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>filter.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/restricted/*</url-pattern>
</filter-mapping>
注意
即使在两个文件中都定义了过滤器,我可以保证我不会同时使用这两种表示法。然而,为了测试和审查,我确实将它们都发布了。
我是网络过滤器的新手,找不到太多关于使用多个过滤器的信息。但我确实读到了,您可以使用多个,它们将按照您在 web.xml
中定义的顺序执行。
问题
有没有人知道为什么我的过滤器也会作为 /login
在页面上执行?该应用程序在 Glassfish 3.1.2 上运行。
最佳答案
<filter-mapping>
匹配条件不是包容性的,而是排他性的。
用下面的映射
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/restricted/*</url-pattern>
</filter-mapping>
您基本上是在指示过滤器应该在 FacesServlet
出现时被调用。每当 URL 模式与 /restricted/*
匹配时将被调用或 .
这不是您所期望的“和”条件。只需删除 <servlet-name>
条目。
正确的@WebFilter
声明将是
@WebFilter("/restricted/*")
假设您不需要 <filter-mapping>
(例如,如果顺序无关紧要)。
关于java - WebFilter urlPatterns 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019779/
是否可以定义 Django urlpattern,它可以获取任意数量的相同类型参数并将它们传递给 View ? 假设我想创建一个页面,从 url 获取数字列表并对它们求和。所以这些将是有效的 url:
我有应用程序 app1。它已连接(通过 INSTALLED_APPS)app2;假设 app2 对我来说是某种黑盒子。但我知道 app2 在它的 url 中有一些 i18n_patterns。 我需要
我需要一个 URL 的正则表达式,例如: /slug/#slug/slug/ 我知道它应该是这样的: r'^(?P[-\w]+)/#(?P[-\w]+)/(?P[-\w]+)/$' 但是我遇到了字符
我正在使用 Nuxt.js 框架,我的 WorkBox 配置如下所示 workbox: { workboxURL: 'https://cdn.jsdelivr.net/npm/workbox-
我能找到的所有 django 站点的 urlpatterns 示例都有一个单独的条目,用于输入没有前导斜杠或根文件夹的 url。然后他们处理每一行的子文件夹。我不明白为什么一个简单的 /? 正则表达式
我目前有一个带有以下注释的主 Controller servlet: @WebServlet(name="ControllerServlet", urlPatterns={"/", "/home"})
我有一个 Django 项目,工作的 urls.py 如下所示: urlpatterns = [ path('', views.index, name='index'), path('
我是 Python 和 Django 的初学者,正在研究书中找到的简单 IoT 教程。该项目是从 Django 应用程序控制 LED 电路。我复制代码后,很少出现错误,因为书中的Python和Djan
我正在尝试将 WebFilter 与 JSF 2 结合使用,但我的过滤器无法正常工作。无法识别 urlPattern。 我的过滤器类: @WebFilter(urlPatterns = {"/rws/
我正在使用如下所示的 WebServlet 注释: @WebServlet( urlPatterns = {"/en", "/de", "/fr"}) public class GeoServlet
虽然我似乎有它们的“精确”副本,但我已经阅读了很多示例,所以我无法弄清楚为什么当我导航到 /login 而不是 /时我的过滤器会执行限制/*。我已尝试使用注释(如下例所示)和 XML 来定义 WebF
在 Servlet 类中: @WebServlet(name = "SinglePost", urlPatterns = {"/post/*"}) public class SinglePost ex
我正在使用 Django 构建一个简单的网络应用程序。我的用户分为多个组,例如 Group A、Group B 等。 我想做的是动态更新 urls.py 中的 urlpatterns 列表,这样我就可
我正在尝试创建一个博客,并希望文章按类别划分。 Django 版本:2.1,Python:3.7我不明白我应该如何更改 urlpatterns 中的路径以显示类别名称,而不是 .在哪里可以查看 Dj
这是一个简短的问题,但我找不到快速的答案。现在我有一个 Servlet BaseServlet,当用户请求以下任何 url 时: host host/ host/BaseServlet 它应该始终引用
我正在开发一个需要加载动态模块(在运行时)的 Django 应用程序。现在我可以上传(从客户端浏览器到服务器)“插件”并在数据库中注册插件模型等。但我需要一种方法来处理每个插件的 urlpattern
在我的项目中,我有一个应用程序,它有自己的 urls.py,就像这样 urlpatterns = patterns('', (r'^(?P\w+)/$', 'MainSite.views.home_p
我有这样的网址结构:page/section/subsection/article,其中 section、subsection 和 article 是用户生成的 slug 名称。 如何编写urlpat
我正在帮助一个 friend 完成一个项目,但在将 urlpatterns url 转换为其等效路径时遇到问题。有什么帮助吗? 我已经完成了第一部分。 path('store', views.prod
我想在rest_framework 中为几个类别创建不同的 View 。但所有类别都来自同一模型。 令我印象深刻的是,这些类别可以作为关键字传递给 urlpatterns (或通过 DefaultRo
我是一名优秀的程序员,十分优秀!