2011-08-07 20 views

回答

0

你可以做這樣的事情

FormsAuthenticationTicket tkt; 
string cookiestr; 
HttpCookie ck; 
tkt = new FormsAuthenticationTicket(1, _user.User_Id.ToString(), DateTime.Now, 
DateTime.Now.AddMinutes(60), true, string.Format("{0},{1}",  System.DateTime.Now.ToString(), _user.User_Id.ToString())); 
cookiestr = FormsAuthentication.Encrypt(tkt); 
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr); 
ck.Path = FormsAuthentication.FormsCookiePath; 
Response.Cookies.Add(ck); 

我只是增加了用戶ID上的Cookie這確實有助於記錄。

+0

但我在哪裏寫它?我需要在創建/超時時寫入cookie並在任何頁面請求上讀取cookie。這是目前由提供者自動完成的事情。我仍然希望它自動完成。所以不必寫邏輯閱讀和決定用戶是否被認證 – Guy

+0

我認爲你想要一個功能,通過它你可以限制在創建cookie的過程中存儲的數據理想情況下,當用戶登錄到系統並進行身份驗證。這是您應該使用此代碼的時間。現在閱讀一個cookie是一個單獨的事情,你可能想要讀取cookie來獲得一些值,這將是我對reach HTTP請求的想法,你可以檢索cookie並且它必須被解密,以便你可以使用這些值。 – Nikshep

+0

實際上,會員提供商正在自動處理所有這些事情。而不是閱讀cookie並檢查用戶是否已通過身份驗證。我只是簡單地稱爲會員的身份驗證功能。唯一的問題是,成員資格提供者通過電子郵件的用戶名來標識用戶。這個值可以被預測和妥協。我想要標準功能,但將標記本身從用戶名更改爲其他類似會話標識的標記 – Guy

相關問題