【发布时间】:2011-11-09 07:49:01
【问题描述】:
ASP.NET MVC 允许用户在设计时为功能(即操作)分配权限,就像这样。
[Authorize(Roles = "Administrator,ContentEditor")]
public ActionResult Foo()
{
return View();
}
要实际检查权限,可以在(Razor)视图中使用以下语句:
@if (User.IsInRole("ContentEditor"))
{
<div>This will be visible only to users in the ContentEditor role.</div>
}
这种方法的问题是所有权限都必须在设计时设置并分配为属性。 (属性是与 DLL 一起编译的,所以我目前知道没有机制可以在 runtime 应用属性(以允许额外的权限),例如 [Authorize(Roles = "Administrator,ContentEditor")]。
在我们的用例中,客户端需要能够在部署后更改哪些用户拥有哪些权限。
例如,客户端可能希望允许ContentEditor 角色中的用户编辑某些特定类型的内容。可能不允许用户编辑查找表值,但现在客户端希望允许此操作而不授予用户 all 下一个更高角色的权限。相反,客户端只是想修改用户的当前角色可用的权限。
有哪些策略可用于允许在属性之外(如在数据库中)定义 MVC 控制器/视图/操作权限并在运行时评估和应用? em>
如果可能,我们非常希望尽可能地坚持使用 ASP.NET 成员资格和角色提供程序功能,以便我们可以继续利用它提供的其他好处。
提前感谢您提供任何想法或见解。
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-membership asp.net-roles