Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 筛选涉及安全约束的请求_Java_Ajax_Authentication_Servlet Filters_Security Constraint - Fatal编程技术网

Java 筛选涉及安全约束的请求

Java 筛选涉及安全约束的请求,java,ajax,authentication,servlet-filters,security-constraint,Java,Ajax,Authentication,Servlet Filters,Security Constraint,我有一个Java web应用程序,它使用安全约束来锁定对资源的访问。当Ajax请求需要身份验证时,我试图操纵HTTP 401响应,因此我创建了一个过滤器,用于观察响应中的HTTP状态,并在需要时对其进行相应修改 问题是,如果需要身份验证,则在401被发送到浏览器之前,过滤器不会被调用。在请求处理链中,安全约束似乎位于过滤器之前。我的过滤器的url模式比任何安全约束都更通用。平台是WebSphere 在Servlet 2.5规范中,我看不到安全约束和过滤器的优先级是在哪里指定的。我是否遗漏了什么?

我有一个Java web应用程序,它使用安全约束来锁定对资源的访问。当Ajax请求需要身份验证时,我试图操纵HTTP 401响应,因此我创建了一个过滤器,用于观察响应中的HTTP状态,并在需要时对其进行相应修改

问题是,如果需要身份验证,则在401被发送到浏览器之前,过滤器不会被调用。在请求处理链中,安全约束似乎位于过滤器之前。我的过滤器的url模式比任何安全约束都更通用。平台是WebSphere


在Servlet 2.5规范中,我看不到安全约束和过滤器的优先级是在哪里指定的。我是否遗漏了什么?

首先,如果未指定,这意味着它将作为容器的实现细节保留。
因此,您应该特别关注
WebSphere

我认为在
Tomcat
中也会发生同样的情况,因为安全约束(如果我没有记错的话)是通过
Valves
实现的,因此会在请求链中位于应用程序代码之前。
从我的观点来看,这是有道理的,因为如果您将保护分配给您的容器,那么如果请求到达您的筛选器,那么它应该已经通过了您容器的身份验证机制(我的观点是筛选器是您资源的一部分)。
在Tomcat中,您可以通过将
过滤器
更换为