如何在ASP.NET窗体身份验证中更改“ReturnUrl”查询字符串键的名称?

时间:2011-09-28 10:22:10

标签: asp.net forms-authentication

当您使用ASP.NET的表单身份验证时,查询字符串键将被传递到登录页面,该页面名为“ReturnUrl”。

例如,如果您尚未登录,并且想要查看http://www.example.com/securepage.aspx之类的安全页面,则系统会将您重定向到:

http://www.example.com/login.aspx?ReturnUrl=securepage.aspx

(或类似的东西,我不太确定ReturnUrl值)。

现在,有没有办法将此ReturnUrl名称更改为path之类的名称?我们在web.config中有一种配置吗?

5 个答案:

答案 0 :(得分:6)

将此密钥添加到web.config

的appSettings部分
<add key="aspnet:FormsAuthReturnUrlVar" value="path" />

答案 1 :(得分:3)

可能以简单的方式你不能这样做,因为它在System.Web汇编中是硬编码的常量:

internal static string GetReturnUrl(bool useDefaultIfAbsent)
{
  FormsAuthentication.Initialize();
  HttpContext current = HttpContext.Current;
  string str = current.Request.QueryString["ReturnUrl"];
  // ....
}

但可能你可以使用一些Url rewriting

另外,请在SO:rewrite url. asp.net c#

上查看此帖子

答案 2 :(得分:1)

FormsAuthentication类已被密封,这意味着您无法继承并覆盖它。此外,它是硬编码读取request["RETURNURL"]查询字符串参数。

你为什么要这样做?

答案 3 :(得分:0)

我只是想说明为什么我们需要更改此参数名称(Web表单场景):

在为umbraco创建插件时,我还需要更改“ReturnUrl”以模拟身份验证。

umbraco正在使用成员资格api,他们的login.aspx正在使用“redir”而不是“ReturnUrl”,为了使我的解决方案尽可能小并且尽可能独立于umbraco,我需要模拟工作流程认证

因为我无法更改此参数名称,所以....我将不得不重新调整。

答案 4 :(得分:0)

当然你可以改变它。只需在项目中添加Global.asax,并在Response.RedirectLocation事件期间更改Application_EndRequest属性。