2012-06-28 113 views
3

我試圖記住我與會議,但我不能成功。首先是可能的?記住我與會話登錄

中的CheckedChanged方法

 if (CheckBox1.Checked) 
    { 
     Session["email"] = TextBox1.Text; 
     Session["pass"] = TextBox2.Text; 

    } 

在頁面加載方法

 if (Session["email"].ToString() !=null && Session["pass"].ToString() !=null) 
    { 
     TextBox1.Text = Session["email"].ToString(); 
     TextBox2.Text = Session["pass"].ToString(); 
    } 

,但它不工作。

回答

11

爲此目的,您不能使用Session。您應該使用Cookie來保存Remember Me狀態。

+3

最後一些正確答案! –

+0

非常感謝,所以我會嘗試使用cookies – calypso

-1

這樣的變化。因爲你正在檢查價值。當空對象存在時,你不能訪問ToString()方法。

if (!string.IsNullOrEmpty(Session["email"]) && string.IsNullOrEmpty(Session["pass"]))) 
// then do with session objects. 
+3

那麼也許string.IsNullOrEmpty更好? –

+3

-1,在會話中不存在的東西上調用'.ToString()'會拋出一個空引用異常。 –

+0

如果您調用ToString(),則永遠不會有空值。 .net中的所有內容都有字符串表示。但要小心,不能在null上調用ToString()! – Nas

3

「記住我」的功能是通過使用持久cookie實現的。

您不能使用會話對象,因爲它會在用戶不活動的一段時間後自動刪除。

安全說明:以純文本格式決不存儲用戶密碼!

0

BTW:它是你最好創建具有​​兩個屬性emailpass用戶類,並存儲在一個會話元素:

User myUser = new User(); 
myUser.Email = "[email protected]"; 
myUser.Pass = "123456"; 

session["user"] = myUser; 

和您存儲記住我一個cookie裏面,有一些憑據高度加密或鹽漬散列,所以當你的用戶再次訪問你匹配的名稱和鹽漬散列與你在數據庫中的信息

+0

並且如果您希望來自會話的用戶對象您使用User myUser = session [「user」]作爲用戶,然後檢查myUser是否不爲空 – JohnnBlade

+0

請使用適當的英語,即「你」和「你的」,而不是「你」和「你」/「年」。如果某人的英語不是很好,因爲他不是母語,但這些聊天/短信快捷鍵在這裏不受歡迎。 – ThiefMaster