从FormsAuthentication.Authenticate的用户名/密码中删除区分大小写

时间:2010-07-05 12:45:43

标签: c# .net asp.net forms-authentication

以下代码和配置工作正常,但强行输入用户名/密码,我想使其不区分大小写。

代码:

protected void LoginButton_Click(object sender, EventArgs e)
        {
            try
            {
                string uid = UserText.Text.Trim();
                string pwd= PwdText.Text.Trim();

                if (string.IsNullOrEmpty(uid) ||
                    string.IsNullOrEmpty(pwd))
                {
                    throw new ApplicationException("UserName or Password should not be blank.");
                }

                bool isAuthrnticated = FormsAuthentication.Authenticate(uid, pwd);

                if (isAuthrnticated)
                {
                    FormsAuthentication.SetAuthCookie("Admin", false);

                    //...
                }
                else
                {
                    ((Site)this.Master).ShowError("Invalid UserName/Password.", ErrorSeverity.Warning);
                }
            }
            catch (Exception ex)
            {
                ErrorLogger.LogError(ex);
                ((Site)this.Master).ShowError(ex.Message, ErrorSeverity.Warning);
            }
        }

的Web.Config

<authentication mode="Forms">
  <forms defaultUrl="~/Default.aspx" loginUrl="~/Default.aspx" slidingExpiration="true" timeout="1000">
    <credentials passwordFormat="Clear">
      <user name="Admin" password="ZAdmin"/>
    </credentials>
  </forms>
</authentication>

3 个答案:

答案 0 :(得分:4)

默认情况下,用户名不是大小写,而是密码。最简单的方法是在注册时,将un和pw更改为ToUpper()或ToLower(),然后在进行身份验证时,对他们输入的内容执行相同的操作。

string uid = UserText.Text.Trim().ToUpper();
string pwd= PwdText.Text.Trim().ToUpper();

答案 1 :(得分:1)

当您存储用户名和密码时,不要按原样存储它们,首先在它们上面调用ToUpper()。然后对传递给FormsAuthentication.Authenticate()的字符串执行相同的操作。这样,在比较之前,两者都将被转换为全大写版本,使案例无关紧要。

答案 2 :(得分:0)