【发布时间】:2011-05-12 08:44:47
【问题描述】:
是否有一种简单的方法可以让表单身份验证忽略 returnURL?
所以用户点击一个链接,站点超时,他们被重定向到我的登录页面(将 ReturnUrl 附加到 URL) - 我不希望这种情况发生,或者当他们再次登录时它被忽略。
【问题讨论】:
标签: asp.net forms-authentication
是否有一种简单的方法可以让表单身份验证忽略 returnURL?
所以用户点击一个链接,站点超时,他们被重定向到我的登录页面(将 ReturnUrl 附加到 URL) - 我不希望这种情况发生,或者当他们再次登录时它被忽略。
【问题讨论】:
标签: asp.net forms-authentication
一种选择是在登录表单的代码隐藏中添加一些代码,执行以下操作:
if (!string.IsNullOrEmpty(Request.QueryString["returnUrl"]))
{
Response.Redirect("path/to/my/login.aspx");
}
换句话说,检查您的登录页面是否存在 returnUrl 查询字符串参数,如果存在,则通过重定向回您自己将其删除。
【讨论】:
如果你不想展示它,你可以把它去掉。我这样做是因为我不希望它显示我设置的对 SEO 友好的 URL。
在Global.asax 文件中输入以下内容:
Protected Sub Application_EndRequest(sender As Object, e As System.EventArgs)
Dim redirectUrl As String = Me.Response.RedirectLocation
If Not Me.Request.RawUrl.Contains("ReturnUrl=") AndAlso Not String.IsNullOrEmpty(redirectUrl) Then
Me.Response.RedirectLocation = Regex.Replace(redirectUrl, "\?ReturnUrl=(?'url'[^&]*)", String.Empty)
End If
End Sub
【讨论】:
我认为您无法在使用表单身份验证时阻止将其附加到 URL 上。
但是,您不需要致电RedirectFromLoginPage(我假设您现在正在这样做);您可以做的就是简单地使用SetAuthCookie 来保持登录状态,然后使用Response.Redirect 在任何你喜欢的地方。
【讨论】: