0

asp:Login允许用户输入前导和尾随空格,然后这些空格是UserName. 在领先的太空案例中,问题很快被发现。但是,当用户(意外)仅使用尾随空格时,针对非空格用户名帐户的身份验证成功。然后...

当使用Page.User.Identity.Name由应用程序保存并稍后与意外插入尾随空格的相同值进行比较时,它(令人惊讶地)不相等:) 换句话说,同一用户Page.User.Identity.Name在一个会话中可能与Page.User.Identity.Name另一会话中的不同 -有尾随空格。

虽然Page.User.Identity.Name.Trim()每次都可以使用,但容易出错,我想在登录时进行修剪。asp:Login在用于身份验证之前修剪登录名的正确方法是什么?该Login.LoggingIn事件可以以某种方式用于该目的吗?

4

1 回答 1

0

这是我解决它的方法。只需根据需要覆盖LogginingIn事件并更新用户名。

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
  {
        Login1.UserName = Login1.UserName.Trim();
  }

另请注意,Page.User.Identity.Name将保持用户名的大小写与用户输入的相同 - 如果您以其他一些方式保存它并且它从大写开始而不是其他日子小写,这可能会令人困惑。为了解决这个问题,我还读取了数据库并将用户名替换为数据库中的值,以确保用户登录尝试的大小写一致。

于 2021-01-05T16:56:02.143 回答