Undertow(Wildfly8)不处理请求参数

时间:2014-10-08 14:55:05

标签: java servlets jboss wildfly undertow

我从Jboss AS7 / EAP6迁移到Wildfly8,并想在这里询问有关下载的任何提示,为什么它不像catalina那样处理请求参数。

所以,我从客户端调用url'。/client/boom/index.htm?i=1',它来到一个错误的servlet,我想得到参数i的值:< / p>

httpServletRequest.getParameter("i");

使用EAP6,它返回1,但使用Wildfly8,它返回null。为什么?

调用链如下(假设基本身份验证):

  1. 使用js调用url'。/ client / boom / index.htm?i = 1'。
  2. Flow不会来到UsernamePasswordLoginModule的子类,因为需要授权。
  3. 使用
  4. 将流程传送到error-servlet

    httpServletRequest.getAttribute(“javax.servlet.error.status_code”)== 401 httpServletRequest.getAttribute(“javax.servlet.error.message”)==未经授权

    这里,在error-servlet中我需要获取参数i。

    其他信息。

    Error-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 
    

1 个答案:

答案 0 :(得分:0)

也许这个问题与Forwarded multipart requests may lose submitted form parameters

有关

尝试通过添加此批注@MultipartConfig

来更改servlet的设置

或以这种方式在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头字段,包含适用于的挑战   请求的资源。

检查您是如何进行身份验证的。