[英]ASP.Net MVC Memberships
我想使用AuthorizeAttribute來控制允許哪些用戶訪問我的操作。 我只想澄清一下我的邏輯是有條理的。
事情正常嗎? 我知道我可以繼承MembershipProvider,但是我不需要那里的所有功能,實際上只需要具有兩個不同角色的登錄能力。
您必須將IPrincipal存儲在某個位置,並在每次請求時將其還原。 如果您將使用FormsAuthentication,這是一個很好的解決方案:
ASP.NET 2.0 Forms身份驗證-保持自定義但簡單
您可以在此處找到其他解決方案:
使用表單身份驗證在ASP.NET MVC上的哪里存儲已記錄的用戶信息?
以及其他許多StackOverflow問題:)
編輯
關於MyBusinessLayerSecurityClass.CreatePrincipal(id,id.Name):
您應該閱讀以下頁面:
http://msdn.microsoft.com/en-us/library/aa480476.aspx
特別是:
FormsAuthenticationModule類構造一個GenericPrincipal對象,並將其存儲在HTTP上下文中。 GenericPrincipal對象持有對FormsIdentity實例的引用,該實例代表當前已通過身份驗證的用戶。 您應該允許表單身份驗證為您管理這些任務。 如果您的應用程序有特定要求,例如將User屬性設置為實現IPrincipal接口的自定義類,則您的應用程序應處理PostAuthenticate事件。 在FormsAuthenticationModule驗證表單身份驗證cookie並創建GenericPrincipal和FormsIdentity對象之后,將發生PostAuthenticate事件。 在此代碼中,您可以構造一個包裝FormsIdentity對象的自定義IPrincipal對象,然后將其存儲在HttpContext中。 用戶屬性。
設置身份驗證Cookie后,將自動管理FormsIdentity。 您要做的就是將其包裝在IPrincipal中。 當HttpContext.Current.User屬性不為null (這是GenericPrincipal,您將在不久后替換)時,所有這些事情都會發生。 當HttpContext.Current.User為null時,則沒有較早創建的身份驗證Cookie,並且未對用戶進行身份驗證。
我相信以下是更典型的:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.