-1
我想在通過電子郵件和密碼進行表單認證之後保存用戶ID。我目前正在使用一個會話來這樣做;認證後的商店Id ASP網絡表單
但是,會話和表單身份驗證有不同的超時,因爲會話是一個用戶登錄時的變量的服務器類型,如果我在另一臺機器上用不同的用戶名登錄會話簡單地更改其值,這是一個主要問題。
除了緩存還有其他方法可以完成嗎?
我想在通過電子郵件和密碼進行表單認證之後保存用戶ID。我目前正在使用一個會話來這樣做;認證後的商店Id ASP網絡表單
但是,會話和表單身份驗證有不同的超時,因爲會話是一個用戶登錄時的變量的服務器類型,如果我在另一臺機器上用不同的用戶名登錄會話簡單地更改其值,這是一個主要問題。
除了緩存還有其他方法可以完成嗎?
您可以將用戶標識存儲在擴展的身份驗證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);