【问题标题】:Can forms authentication ignore returnUrl表单身份验证可以忽略 returnUrl
【发布时间】:2011-05-12 08:44:47
【问题描述】:

是否有一种简单的方法可以让表单身份验证忽略 returnURL?

所以用户点击一个链接,站点超时,他们被重定向到我的登录页面(将 ReturnUrl 附加到 URL) - 我不希望这种情况发生,或者当他们再次登录时它被忽略。

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    一种选择是在登录表单的代码隐藏中添加一些代码,执行以下操作:

    if (!string.IsNullOrEmpty(Request.QueryString["returnUrl"]))
    {
        Response.Redirect("path/to/my/login.aspx");
    }
    

    换句话说,检查您的登录页面是否存在 returnUrl 查询字符串参数,如果存在,则通过重定向回您自己将其删除。

    【讨论】:

    • 是不是有点……贵?
    【解决方案2】:

    如果你不想展示它,你可以把它去掉。我这样做是因为我不希望它显示我设置的对 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
    

    【讨论】:

      【解决方案3】:

      我认为您无法在使用表单身份验证时阻止将其附加到 URL 上。

      但是,您不需要致电RedirectFromLoginPage(我假设您现在正在这样做);您可以做的就是简单地使用SetAuthCookie 来保持登录状态,然后使用Response.Redirect 在任何你喜欢的地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-19
        • 1970-01-01
        • 1970-01-01
        • 2014-07-13
        • 2011-01-23
        • 2014-03-11
        • 2013-04-21
        • 1970-01-01
        相关资源
        最近更新 更多