以下代码和配置工作正常,但强行输入用户名/密码,我想使其不区分大小写。
代码:
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>
答案 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)