2010-09-22 98 views
0

新來的MVC,與asp.net工作了很多,但從未使用內置的會員,認證,授權的東西之前。asp.net mvc會話和會員身份驗證

我有2個問題:

  1. 在asp.net幾天我會登錄在會話用戶的詳細信息(用戶名,&姓氏,電子郵件)(使用自定義類)和存儲只是在每個安全頁面檢查會話[「UserDetails」]!= null,我仍然可以在MVC中做到這一點? (爲什麼我沒有用內置的東西做它? - 移動問題#2)

  2. 在我的數據庫我有一個作者表(與用戶&通),這是連接到20個其他表andi'我有一個用戶表(用戶&通),連接到1或2個表。 假設我想使用內置的東西,我如何使用相同的會員供應商驗證作者登錄和用戶登錄?以及如何在調用User.Identity.IsAuthenticated時知道當前登錄的用戶或作者?

謝謝大家!

回答

0

問題1:

在你的控制器,你將使用HttpContext.User中來得到當前的IPrincipal對提出請求的用戶。爲了確保動作(或整個控制器)的安全,只需使用[授權]屬性進行修飾即可。閱讀關於這裏的授權屬性http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

問題2:

在這裏,你有兩個選擇,延長概況提供者來管理額外的數據或鬆一點參照完整性,只是使用的應用服務,數據庫授權和在與用戶相關的每個實體中保留並具有UserId字段,並在您的數據訪問層中構建您的用戶和相關實體集合。我總是使用第二個。

+0

您好,感謝,但你可以更多地討論選項2「鬆一點參照完整性,只是使用的應用程序服務數據庫」 – TomerMiz 2010-09-22 18:43:09

+0

當然,理想情況下,你就會有一個單一的數據庫,所以你可以讓所有的與用戶表的必要關係。採用第二種方法將意味着將有兩個數據庫,一個用於用戶,一個用於應用程序數據,因此用戶與其相關實體之間的架構中不存在任何關係。 – JoseMarmolejos 2010-09-23 00:20:11

+0

嗨,所以要用第二種方法,我將不得不在用戶數據庫中保存用戶類型(customr,author ..)?但爲什麼2個數據庫?我可以將用戶表和外鍵從用戶分配給客戶和作者表。你不覺得嗎? – TomerMiz 2010-09-23 07:04:06

0
  1. 你不應該這樣做在常規的asp.net。你應該使用表單身份驗證來發出已簽名的票證,這在2.0+以上可能已與會員提供商。早些時候非常靈活,所以在閱讀#2之前,已經沒有理由不使用它了)。但是,是的,你仍然可以這樣做,並且沒有其他不同的建議方式在asp.net MVC中處理它。
  2. 您可以將額外的數據放在故障單中,也可以使用約定將某些內容附加到故障單中的用戶名中,然後當接收到Cookie時,可以用自定義主體替換上下文的IPrincipal。
+0

嗨,謝謝,你的意思是把用戶名保存在cookie中作爲「autor_RealUserName」,以便將其標識爲作者? – TomerMiz 2010-09-22 18:50:26

+0

是的,但我的意思是特別在表單身份驗證Cookie中,而不是您創建的自定義Cookie。有關表單身份驗證的更多信息,請訪問此鏈接:http://msdn.microsoft.com/en-us/library/ff647070.aspx。 – eglasius 2010-09-22 19:31:02