当您使用ASP.NET的表单身份验证时,查询字符串键将被传递到登录页面,该页面名为“ReturnUrl”。
例如,如果您尚未登录,并且想要查看http://www.example.com/securepage.aspx
之类的安全页面,则系统会将您重定向到:
http://www.example.com/login.aspx?ReturnUrl=securepage.aspx
(或类似的东西,我不太确定ReturnUrl值)。
现在,有没有办法将此ReturnUrl
名称更改为path
之类的名称?我们在web.config中有一种配置吗?
答案 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
属性。