我终于用 SimpleMembership 设置了我的 MVC 4 应用程序,但现在遇到了一个新问题。我有一个菜单系统(在侧边栏中),让用户可以访问整个应用程序的各种功能。我最近意识到,为了有点用户友好,我需要根据角色禁用或删除各种菜单链接。所以我建立了一个角色系统和与这些菜单链接的关系,效果很好。但是,“基本站点访问”角色不应有权访问菜单中的所有链接(及其相应的控制器/操作)。以前,我Authorize
通过过滤器配置简单地全局应用属性来授予站点访问权限:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
现在我发现,为了控制对应用程序的“基本”访问,我需要Authorize
在操作级别添加单个属性(“管理员”角色具有完全访问权限)。虽然这很好,虽然有点烦人,但它似乎不是很有可扩展性。如果我的客户通过管理界面添加了一个新角色并想要控制对各种任务的访问怎么办?我已经对菜单系统进行了编码,以根据哪些角色可以访问哪些任务来动态禁用链接。但是没有办法(据我所知)动态地将不同的角色应用于Authorize
属性。
虽然我已经阅读了为什么 SimpleMembership 可能不是蜜蜂的膝盖,但我刚刚完成了从 ASP.NET Membership 的迁移(它本身有严重的缺点),我当然不想推出自己的用户/角色管理系统。有没有人成功地实现了一些东西来处理这种情况?