窗体身份验证和URL重写(Form Authentication and URL Rewriting

2019-10-17 09:44发布

我想申请自定义窗体身份验证到我的网站,我已经应用URL重写。 使用此代码Application_Startglobal.asax文件。

routes.MapPageRoute("bill-details",                 //Route Name
                    "{billno}",                     //URL with Parameters
                    "~/CallCenter/BillDetails.aspx" //Webforms page to Handle it.
                    );

但是,当我试图重写Loginpage网址,我不能改写它。

<forms loginUrl="/Login.aspx" name="MyCustomAuthentication" timeout="30"/>

在实际的问题是,当我打开它会检查验证的网页,如果它没有通过认证,那么它重定向到login.aspx的页面。

它显示为mywebsite.com/Login.aspx?ReturnUrl="..."我不能改写这个。 如果我不能删除返回URL,然后我可以地点Login而不是Login.aspx

如果我使用此代码从这篇文章- > 如何从URL中移除RETURNURL?

如果我用这个,那么控制循环一遍又一遍,它说 - 过多的重定向。 我认为这个问题是,当控制进入Login页面像mywebsite.com/Login ,然后检查认证并重定向到Login.aspx页。 和你的代码再次重定向到登录页面。 这个循环继续。

我也不需要返回URL,因为我的用户可以登录第一中序访问我的网站。

所以,你可以帮我卸下返回URL也? 而也是在URL重写?

我不能够解决这个问题!

检查我的网站。 - > http://orders.maabookings.com UserId - temp Password - temp

在此在登录页面上,其显示为http://orders.maabookings.com/Login.aspx?ReturnUrl=%2f我需要这是http://orders.maabookings.com/Login我怎样才能做到这一点? ?

Answer 1:

添加一个web.config到您的Login.aspx放在文件夹

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
  <location path="Login.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>
</configuration>

在Global.asax中

Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires upon attempting to authenticate the use

    Dim _URL As String = Request.Url.ToString

    If _URL.Contains("ReturnUrl") Then
        Response.Redirect("/Login")
    End If
End Sub

我认为这可以帮助你。



文章来源: Form Authentication and URL Rewriting