我目前有一个登录表单,单击登录按钮会调用以下方法:
protected void btnLogin_Click(object sender, EventArgs e)
{
AccountBLL accBLL = new AccountBLL();
string username = tbUsername.Text;
string password = accBLL.getAccount(username).Password;
if (tbPassword.Text == password)
{
// Authenticate user
string role = accBLL.getAccount(username).Role;
// Create Form Authentication Ticket
FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(60), false, role);
// Encrypt the ticket
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
// Create cookie
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
// Add cookie to outgoing cookie collection
Response.Cookies.Add(authCookie);
// Redirect to the URL
if (role == "admin")
Response.Redirect("AdminHome.aspx");
else if (role == "user")
Response.Redirect("UserHome.aspx");
else
lblMsg.Text = "Invalid login!";
}
else
{
lblMsg.Text = "Invalid password.";
}
//string accountID = (Session["AccountID"]).ToString();
}
但是,如果帐户不存在/尚未创建,我将在string password = accBLL.getAccount(username).Password;
上收到空指针错误,因为传递给getAccount()
方法的用户名不存在。所以我的问题是,我应该如何编辑代码来实现某种验证,如果用户标识传入以检索密码的事件不存在,则会向用户显示错误消息?
答案 0 :(得分:3)
嗯,您已经自己说过,当提供的用户名不存在时,getAccount方法返回null。如果我是你,我会检查accBLL.getAccount(username)是否返回null。如果是这样,我不会执行其余的代码,而是显示一个标签,其中包含一条消息,告知用户输入的用户名不存在。
首先检查用户名是否存在,如果存在,则检查密码是否正确。
我希望这会有所帮助。
答案 1 :(得分:2)
更改这些行 <击> 撞击>
<击>string password = accBLL.getAccount(username).Password;
if (tbPassword.Text == password)
击> <击> 撞击> 对此。
var account == accBLL.getAccount(username);
if (account != null && tbPassword.Text == account.Password)
答案 2 :(得分:0)
比较null 喜欢 填补dt 并比较dt
if (dt.rows.count==0)
{
return null;
}
如果尚未创建帐户,将返回空值。 然后你的登录按钮点击事件将如下所示。
protected void btnLogin_Click(object sender, EventArgs e)
{
AccountBLL accBLL = new AccountBLL();
string username = tbUsername.Text;
string password = accBLL.getAccount(username).Password;
if(password != null)
{
if (tbPassword.Text == password)
{
// Authenticate user
string role = accBLL.getAccount(username).Role;
// Create Form Authentication Ticket
..... your remaining code including else
}
else
{
lblMsg.Text = "Account Doesnt Exist";
}