2017-10-04 49 views
-1

我想在通過電子郵件和密碼進行表單認證之後保存用戶ID。我目前正在使用一個會話來這樣做;認證後的商店Id ASP網絡表單

但是,會話和表單身份驗證有不同的超時,因爲會話是一個用戶登錄時的變量的服務器類型,如果我在另一臺機器上用不同的用戶名登錄會話簡單地更改其值,這是一個主要問題。

除了緩存還有其他方法可以完成嗎?

回答

0

您可以將用戶標識存儲在擴展的身份驗證Cookie中。在授權程序撰寫定製cookie並把它添加到響應:

var ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(60), false, userId.ToString())); 
HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)) { HttpOnly = true }); 

可以解密該cookie的身份驗證請求,並找出哪些是用戶ID:

HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName]; 
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 
int iserId = int.Parse(authTicket.UserData);