如何防止Login.aspx页的ReturnUrl参数覆盖ASP.NET登录控件的DestinationPageUrl属性?

时间:2020-03-05 18:44:37  来源:igfitidea点击:

我正在使用ASP.NET登录控件和表单身份验证作为ASP.NET Web应用程序的成员身份/凭证。我有诸如PasswordRecovery.aspx之类的页面,仅匿名用户可以访问。当我从此类页面单击登录链接时,登录页面在地址栏中具有ReturnUrl参数:

http://www.example.com/Login.aspx?ReturnUrl=PasswordRecovery.aspx

然后,在成功登录后,用户将返回到他们不再具有访问权限的ReturnUrl参数中指定的PasswordRecovery.aspx页。

解决方案

回答

我在Velocity Reviews上找到了答案。我处理了LoggedIn事件,以强制重定向到DestinationPageUrl页面。

Public Partial Class Login
    Inherits System.Web.UI.Page

    Protected Sub Login1_LoggedIn(ByVal sender As Object, _  
            ByVal e As System.EventArgs) Handles Login1.LoggedIn
        'overrides ReturnUrl page parameter
        Response.Redirect(Login1.DestinationPageUrl)
    End Sub

End Class