例如,如果用戶登錄,存儲用戶ID和/或他/她的角色/組的最佳方法是什麼?顯而易見的方法是Cookie和會話?還有其他的選擇如何在整個asp.net mvc(剃鬚刀3)應用程序中存儲值?
1
A
回答
0
至少,使用Forms Authentication可以將用戶ID和角色放在Formst Auth票證中。
Here'a的我是如何做的一個例子:
public static HttpCookie CreateCookie(IUserIdValue userId, string name, IEnumerable<int> group, bool isPersistent = false)
{
var user = new AuthenticationTicketData() { Groups = @group, UserId = userId };
var ft = new FormsAuthenticationTicket(2, name, DateTime.Now, DateTime.Now.Add(FormsAuthentication.Timeout),
isPersistent, user.Pack());
var ck = new HttpCookie(FormsAuthentication.FormsCookieName)
{
Value = FormsAuthentication.Encrypt(ft),
Path = FormsAuthentication.FormsCookiePath,
Domain = FormsAuthentication.CookieDomain
};
if (isPersistent)
{
ck.Expires = DateTime.Now.Add(FormsAuthentication.Timeout);
}
return ck;
}
public static string Pack(this AuthenticationTicketData data)
{
if (data == null) throw new ArgumentNullException("data");
return String.Format("{0};{1}",PackUserId(data.UserId),string.Join(",",data.Groups));
}
static string PackUserId(IUserIdValue uid)
{
if (uid == null) throw new ArgumentNullException("uid");
var tpn = uid.GetType().GetFullTypeName();
return String.Format("{0}|{1}",tpn,uid.ToString());
}
public static HttpCookie SetAuthCookie(this HttpResponse response,IUserIdValue userId, string name, IEnumerable<int> group, bool isPersistent = false)
{
var ck = CreateCookie(userId, name, group, isPersistent);
response.AppendCookie(ck);
return ck;
}
另一種選擇是保留用戶會話在數據庫中(沒有聯繫到會議),就像一個表(GUID,用戶名,用戶ID ,角色expireAt)。但是,如果您想要跟蹤用戶何時登錄/註銷,或者您是否使用自己的身份驗證(而不是表單身份驗證),則此方法更合適。
+0
感謝您的示例和說明! – Chaka 2013-04-08 12:45:06
0
如果你想存儲每個用戶的價值,我會議是最好的選擇。會話是在每個用戶/瀏覽器的基礎上創建的。每個用戶都有他/她自己的會話對象,這樣您就可以在應用程序之間保留用戶角色信息,直到會話結束。
我絕對不會建議將用戶安全信息存儲在cookie中,因爲這會在您的應用程序中造成很大的安全漏洞。
相關問題
- 1. 如何在asp.net MVC 3剃鬚刀
- 2. asp.net MVC 3剃鬚刀部署IIS7
- 3. ASP.NET MVC 3剃鬚刀遞歸函數
- 4. asp.net mvc 3剃鬚刀文件上傳
- 5. asp.net MVC 3剃鬚刀/ LINQ的
- 6. asp.net mvc 3剃鬚刀&html表
- 7. asp.net MVC 3剃鬚刀和HTML IFRAME
- 8. asp.net MVC 3剃鬚刀自IEnumerable
- 9. ASP.NET MVC 3剃鬚刀DisplayFor代表
- 10. asp.net MVC 3剃鬚刀定製幫手
- 11. HTML.Partial - MVC 3剃鬚刀
- 12. 的SiteMapPath使用MVC 3剃鬚刀
- 13. ASP.NET MVC(剃鬚刀)部署
- 14. asp.net mvc剃鬚刀是沒有對話框不在剃鬚刀
- 15. 顯示整數值img標籤在MVC 3剃鬚刀
- 16. 錯誤時,部署ASP.NET MVC 3剃鬚刀的Web應用程序服務器
- 17. webgrid中的Mvc 3 texbox(剃鬚刀)
- 18. asp.net MVC 3 - MVC 3剃鬚刀:國家選擇下拉列表
- 19. 在mvc 3剃鬚刀應用程序中使用必要/推薦的AntiXss庫
- 20. MVC 3剃鬚刀AJAX不起作用
- 21. 在ASP.NET MVC 3中的JqGrid列中添加ActionLink剃鬚刀
- 22. 顯示在MVC 3剃鬚刀
- 23. MVC 3剃鬚刀模板在哪裏?
- 24. HTML在MVC 3剃鬚刀@using塊內
- 25. 如何在mvc 3剃鬚刀中使用lambda
- 26. 的DevExpress網格MVC 3剃鬚刀
- 27. ASP.Net MVC:如何在CSS文件中使用剃鬚刀變量
- 28. SignalR javascript在mvc剃刀應用程序
- 29. MVC 3剃鬚刀,語法錯誤
- 30. MVC 3 - 剃鬚刀 - 從模型
如果你想存儲每個用戶的價值,我認爲這些是最好的選擇 – pollirrata 2013-04-05 15:50:38
我不完全遵循,你能給我一個例子嗎? – Chaka 2013-04-05 15:54:35
我在答案中添加了更多詳細信息... – pollirrata 2013-04-05 16:00:27