2017-08-08 23 views
1

我正在使用ASP.Net MVC進行Web開發。目前,我的網站的用戶在訪問控制器的操作時根據他們的角色被授權。如何允許用戶爲其子用戶/代理定義可訪問的頁面?

每個用戶都可以定義子用戶或代理,並允許他們訪問他/她已有訪問權限的子集。例如,用戶A可以訪問動作{a, b, c}。現在他要定義代理人BC並授予他們分別訪問動作{a}{b, c}

考慮到操作名稱在開發過程中可能會發生變化,我該如何實現?

回答

0

您需要爲他們提供訪問該操作的角色。

例如,您有角色a,b,c,並且您的操作爲一,二,三。

使用Authorize屬性來裝飾操作一個只允許它訪問角色a。對於其他動作如下

[Authorize(Roles = "a")] 
public ActionResult One() 
{ 
return View(); 
} 

[Authorize(Roles = "b")] 
public ActionResult Two() 
{ 
return View(); 
} 

[Authorize(Roles = "c")] 
public ActionResult Three() 
{ 
return View(); 
} 

這意味着您的用戶A具有角色(a,b,c)。創建用戶B和C. 授予用戶B角色a,賦予用戶C角色b和c。

只要角色保持不變,只要您更改動作名稱即可。用戶仍然可以訪問它。

+0

因此,對於每一個行動,我都應該定義一個新角色。我認爲這可能會導致UserRoles表中的大量角色和大量記錄。另一方面,命名這些角色可能是一項艱苦的工作。 – Mowji

+0

你的問題談到了每個動作的角色。您可以使用控制器級別的角色來控制對控制器上所有操作的訪問。您還可以使用角色來控制對應用程序特定區域的訪問。 –