2014-07-10 49 views
0

我不知道如何解決該問題。簡而言之 - 我想在應用程序項目的某個區域擁有單獨的成員資格。但是這個「分開」的成員必須使用與「主要」成員相同的數據庫。MVC區域單獨成員資格

在我的主要項目中,我使用SimpleMembershipProvider

例子:

http://example.com「正常」的用戶洛,我可以得到關於他在所有的主體工程控制器和視圖的HttpContext.User.Identity信息 - 他只是記錄。但是當他輸入special區域(http://example.com/special)時,HttpContext.User.Identity必須在該區域返回空值 - 用戶是「未記錄」的。另一方面,當「特殊」用戶輸入http://example.com/special併成功登錄時 - 他在所有special區域(不包括主要應用程序(僅在該區域))被授權。在主項目中,他「沒有記錄」 - 他必須登錄(具有「正常」角色的用戶)。

我該如何做到這一點,而不會頭痛?

+3

使用角色!對每個區域都有一個角色,然後在這些區域的每個控制器上都有'[Authorize(Roles =「ThisArea」)]',這將是我會這樣做的方式!然後你可以創建一些自定義屬性和過濾器! –

回答

0

您所描述的是基於角色的安全性的教科書用例。

您將角色分配給用戶,並根據該角色的成員身份授予對區域的訪問權限。因此,您將創建一個管理員角色,並且只將具有管理員角色的用戶授予管理員部分。這可以通過`[Authorize(Roles =「Administrators」)]屬性輕鬆完成。

您還可以在應用程序中使用角色來定義他們看到哪些字段或他們可以編輯哪些字段。您可以通過User.IsInRole("Administrators")添加代碼來檢查角色的訪問權限,並在編輯或視圖字段周圍添加條件邏輯。