我从Jboss AS7/EAP6迁移到Wildfly8,我想在这里询问关于underflow的任何提示,为什么它不像catalina在EAP6中那样处理请求参数。
所以,我从客户端打电话到url/client/boom/index.htm?i=1',则会出现一个错误servlet,我想在其中获取参数i
:的值
httpServletRequest.getParameter("i");
EAP6返回1,而Wildfly8返回null。为什么?
调用链如下(假设基本身份验证):
- 用js调用url/client/boom/index.htm?i=1'
- 流未到达UsernamePasswordLoginModule的子类,因为需要授权
- 流到达带有的错误servlet
httpServlet请求.getAttribute("javax.servlet.error.status_code")==401httpServlet请求.getAttribute("javax.servlet.error.message")==未经授权的
在这里,在错误servlet中,我需要获取参数I。
其他信息。
错误servlet是这样映射的:
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>*.error</url-pattern>
</servlet-mapping>
...
<error-page>
<error-code>401</error-code>
<location>/Error.error</location>
</error-page>
我在jboss-web.xml 中声明了一个名为"boom"的安全域
<jboss-web>
<security-domain>boom</security-domain>
<disable-audit>true</disable-audit>
</jboss-web>
以及在standalone.xml 中
<subsystem xmlns="urn:jboss:domain:security:1.2">
<security-domains>
...
<security-domain name="boom" cache-type="default">
<authentication>
<login-module code="com.boom.security.BoomLoginModule" flag="required"/>
</authentication>
</security-domain>
</security-domains>
</subsystem>
Auth方法在web.xml中声明为基本方法。
更新。错误servlet中的属性列表在EAP6和WF8 中不同
WF8:中的属性
javax.servlet.error.message: Unauthorized
javax.servlet.error.status_code: 401
javax.servlet.error.servlet_name: default
javax.servlet.error.request_uri: /boom-portal/client/boom/index.htm
EAP6:中的属性
javax.servlet.forward.request_uri: /boom-portal/client/boom/index.htm
javax.servlet.forward.context_path: /boom-portal
javax.servlet.forward.servlet_path: /client/boom/index.htm
javax.servlet.forward.path_info: /Error.error
javax.servlet.forward.query_string: i=1
javax.servlet.error.message:
javax.servlet.error.status_code: 401
javax.servlet.error.servlet_name: default
javax.servlet.error.request_uri: /boom-portal/client/boom/index.htm
也许这个问题与转发的多部分请求可能会丢失提交的表单参数有关
尝试通过添加以下注释来更改servlet的设置@MultipartConfig
或者以这种方式在web.xml
描述符中
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>.....</servlet-class>
<load-on-startup>0</load-on-startup>
<multipart-config/>
</servlet>
更新
问题是身份验证,您收到的状态码为401:
401状态代码解释
该请求需要用户身份验证。响应必须包括WWW-Authenticate标头字段包含适用于请求的资源。
看看你是怎么做的。