2010-01-26 60 views
0

我想知道我怎麼能實現成員提供類要記住誰登錄用戶的能力。
會員提供一流的

我有會員提供一流的,我需要的「記住我」複選框,不過我還是要說功能不知道如何實現一些方法

+0

有點不清楚你的意思 - 這裏有什麼問題?寫一個會員供應商?還是記錄訪問? – 2010-01-26 07:13:36

+0

我想他意味着他需要登錄屏幕上的「記住我」複選框的功能。 – Iravanchi 2010-01-26 07:15:42

+0

否我的意思是寫作會員供應商 – kamiar3001 2010-01-26 07:16:17

回答

2

爲了實現此功能您必須在用戶計算機上創建一個具有某個到期日期的永久性cookie。因此,如果用戶檢查記住我複選框您發出以下餅乾:

var cookie = new HttpCookie("_some_cookie_name_", "username") 
{ 
    Expires = DateTime.Now.AddDays(15) // Remember user for 15 days 
}; 
Response.Cookies.Add(cookie); 

然後在顯示的登錄屏幕,您可以檢查是否存在Cookie和預先填入用戶名:

var cookie = Request.Cookies["_some_cookie_name_"]; 
if (cookie != null) 
{ 
    usernameTextBox.Text = cookie.Value; 
} 
0

我會使用一個Hashtable,如果它在C#中,由用戶ID鍵入。像這樣(其中lsdfjk只是任何字符串的用戶ID對應,並且假設有定義的類的UserInfo,使用構造以字符串的用戶ID作爲參數):

 string userID = "lsdfjk"; 
     UserInfo userInfo = null; 
     Hashtable htMembers = new Hashtable(); 
     if (htMembers.ContainsKey(userID)) 
     { 
      userInfo = (UserInfo)htMembers[userID]; 
     } 
     else 
     { 
      //It's a new member 
      userInfo = new UserInfo(userID); 
     } 
+0

爲什麼不使用強類型'Dictionary'類?我看到太多使用'ArrayList'和'Hashtable'的人。 – ChaosPandion 2010-01-26 07:27:56

0

「記住我」與真正的會員供應商沒有任何關係。基本上它只是表單身份驗證的一項功能,您可以在其中設置持久性Cookie,以便人們在網站上顯示時可以自動登錄。

您可以使用RedirectFromLoginPage()方法自動執行此操作。

FormsAuthentication.RedirectFromLoginPage(username, true); 

第二個參數「true」表示「設置永久性cookie」。用戶將登錄,直到cookie過期或者他們清除他們的cookie。

如果您需要更多控制權,您可以通過直接操作cookies集合手動設置cookie。