asp:登录控制 - 阻止提交

时间:2017-08-11 12:28:48

标签: c# asp.net

我使用控制asp:登录(asp.net webforms)并在验证之前我需要检查字段" user.MustChangePassword"。如果它是真的我需要重定向用户到另一页:

protected void signInControl_LoggingIn(object sender, System.Web.UI.WebControls.LoginCancelEventArgs e)
{ 
    ...
    if (user.MustChangePassword)
    {
        e.Cancel = true; // prevent authentification
        Response.Redirect("/ChangePassword.aspx"); 
        return;
    }
    ...
}

但重定向不起作用,页面只是重新加载。我怎么能解决这个问题?

3 个答案:

答案 0 :(得分:0)

该页面路径看起来不正确。考虑到您的网页位于文件夹的根目录

,请添加如下所示的~
Response.Redirect("~/ChangePassword.aspx");

答案 1 :(得分:0)

尝试设置登录控件的DestinationPageUrl属性。

E.g。

signInControl.DestinationPageUrl = "/ChangePassword.aspx";

答案 2 :(得分:0)

在登录之前会引发

Login.LoggingIn事件。因此,我能想到的一件事是你必须匿名访问web.config中的ChangePassword.aspx页面。

<configuration>
  <location path="ChangePassword.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

如果更改密码需要登录,则将重定向逻辑放在Login.LoggedIn事件中。