1

我们有一个带有登录页面的简单的 ASP.NET Web 应用程序。用户输入凭据并提交表单后,服务器会处理详细信息,如果成功,则 Response.Redirect() 将用户带到主菜单页面。(我们还有一个导航栏,用户可以通过类似的 response.redirects 导航到其他页面)

我们的一位客户正在设置 IBM Data Power Web 应用程序防火墙,并告诉我们此 POST 后重定向违反了 RFC,因此应用程序无法运行。

这里有一些与 Get/Post/Redirect 相关的问题,它们表明浏览器可以自行决定将 302 响应用作 get 还是 post。我还在公共互联网上找到了其他链接,这些链接让我相信 IBM 设备可以配置为处理这一点。

在我建议更改 IBM 设备配置之前,是否有任何基于配置(或简单代码)的方法可以使简单的登录页面(不使用 asp.net 登录控件)在 GET 请求可以发送登录凭据的情况下工作,或者使所有站点中的回发使用 GET 而不是 POST?

此外,如果有人有使用此 IBM 设备的提示,我们将不胜感激。

代码示例...

var userName = txtUserName.Text.Trim();
var password = txtPassword.Text.Trim();
var authResult = GetAuthService().AuthenticateUser(userName, password);
if (authResult == true)
{
 //set forms auth cookie
 Response.Redirect("Menu.aspx", false);
}
else
{
 lblError.Text = "Unable to login";
}
4

1 回答 1

1

POST 后跟重定向是许多实现中常见的机制。例如,考虑使用 JAAS 身份验证。您向用户展示了一个表单,并将其发布在“*/j_security_check”URL 上。一旦通过身份验证,您将被重定向到资源页面,否则您将被重定向到错误页面。

我不确定 datapower 上配置了什么,但如果您的开发人员为此使用 MPGW 构造,那么他可以尝试使用它的“高级”选项卡中的两个属性。一个是“跟随重定向”,另一个是允许“空请求”。

可能这对你有帮助。

于 2015-10-20T13:01:16.060 回答