我终于使用SimpleMembership设置了我的MVC 4应用程序,但现在遇到了一个新问题。我有一个菜单系统(在侧边栏中),让用户可以访问整个应用程序中的各种功能。我最近意识到,为了方便用户,我需要根据角色禁用或删除各种菜单链接。所以我建立了一个角色系统和这些菜单链接的关系,这完美地运作。但是,“基本网站访问”角色不应可以访问菜单中的所有链接(及其相应的控制器/操作)。以前,我只是通过我的过滤器配置全局应用Authorize
属性来提供站点访问权限:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new AuthorizeAttribute());
}
现在我已经发现,为了控制对应用程序的“基本”访问,我需要在操作级别添加单个Authorize
属性(“admin”角色具有完全访问权限) 。虽然这很好,虽然有点烦人,但它似乎不太可扩展。如果我的客户通过管理界面添加新角色并想要控制对各种任务的访问,该怎么办?我已经编写了菜单系统编码,以根据哪些角色可以访问哪些任务来动态禁用链接。但是(我知道)没有办法动态地将不同的角色应用于Authorize
属性。
虽然我已经阅读了why SimpleMembership may not be the bee's knees,但我刚刚从ASP.NET成员资格迁移(其中严重缺点),我当然做不想要推出自己的用户/角色管理系统。有没有人成功实现了处理这种情况的东西?
答案 0 :(得分:2)
如果你有许多你不想用注释装饰的控制器/动作,你一定要看看Fluent Security。
它允许从Global.asax处理所有授权。它有很好的文档,并有一个很好的教程here。