2017-08-08 15 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

你的问题谈到了每个动作的角色。您可以使用控制器级别的角色来控制对控制器上所有操作的访问。您还可以使用角色来控制对应用程序特定区域的访问。 –