Login控制項:使用者登入失敗的訊息提示

來源:互聯網
上載者:User
控制項

  ASP.NET 2.0提供了一套強大的身分識別驗證體系,並且伴隨一套登入控制項的推出,使得ASP.NET 2.0開發人員在做使用者註冊-登入驗證功能模組時大大降低了開發費時。

  但是我們發現在使用Login登入控制項時我們只能使用它的FailureText 屬性擷取或設定當登入嘗試失敗時顯示的文本,當登入嘗試失敗時向使用者顯示的文本,預設為“您的登入嘗試失敗,請重試。”

  但是在使用ASP.NET 2.0的Membership體系時可能產生登入失敗的情況不僅僅是使用者名稱/密碼不正確而產生的,也能由於帳戶被鎖定了(MembershipUser.IsLockedOut=True)或是程式需要帳戶不能進行資格驗證(比如註冊使用者需要審核才能正式開通,一般使用MembershipUser.IsApproved=False)又或者自己擴充了一些其他的附屬Profile驗證失敗……但是,使用Login登入失敗時,預設卻只能顯示我們設定的FailureText的內容。當然,出於安全性的考慮MS並不推薦您把具體的登入失敗的資訊顯示給使用者,例如,像“使用者 <username> 的密碼無效”這樣的錯誤資訊向潛在的攻擊者透漏了 <username> 是系統的使用者這一情況。

  不過,有時我們還是希望能在帳戶被鎖定時顯示“您的帳戶被鎖定”,在為審核時顯示“您的帳戶正在審核中……”,那麼要怎麼顯示給使用者呢?一種最簡單的辦法是在Login.LoginError 事件中做處理。

  比如:

protected void Login1_LoginError(object sender, EventArgs e)
{
Login l = (Login)sender;
MembershipUser u = Membership.GetUser(l.UserName);
if (!u.IsApproved)
{
    l.FailureText = "帳戶證在審核中";
    return;
}
if (u.IsLockedOut)
{
    l.FailureText = "您的帳戶已經被鎖定";
    return;
}
// 預設錯誤訊息提示
l.FailureText = "您的登入嘗試失敗,請重試。";
}


  當然,您可以通過重載等更進階的方法來實現這一功能。



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。