具有基于组的角色的ASP.NET标识自定义

时间:2015-06-19 18:07:57

标签: entity-framework-6 asp.net-identity database-schema code-first

也许我误解了ASP.NET身份中的角色和数据库模型的概念,但是我很难绕过如何实现以下场景:使用ASP.NET身份,它似乎用户具有基于角色的全局权限,而不是更细粒度级别的权限。我试图在EF6中使用Code-First实现DB Schema,其中User可以是多个Group的成员。但是,我希望用户在一个组中拥有一个角色,而在另一个组中拥有不同的角色,而不是拥有全局角色。

例如,用户可以创建组,因此可以是组管理员,但也可以是组中的教师,因此可以提供内容。同一用户也可以是不同组中的学生,因此在该组中具有不同的权限。用户可以在给定组中执行多个角色,其权限应基于其在该组中的角色。

从我所看到的,这不是ASP.NET身份的预期结构,因为我无法看到如何将特定角色的范围限制为一个组。另外,理想情况下,我希望能够将用户分配到一个组,然后将一组用户分配给另一个组,例如,我有一组用户,我将该组分配给一个特定的角色另一个小组。

我想到的是一个Membership表,它有UserId,GroupId和RoleId来处理将角色映射到特定的组,但是我如何扩展它以使Roles从Groups继承,并且我能够利用ASP .NET Identity可以帮助我管理这些角色,还是我必须从头开始自己制作解决方案?

1 个答案:

答案 0 :(得分:2)

如果您还没有找到它并且您正在使用MVC,请查看此内容。

http://typecastexception.com/post/2014/08/10/ASPNET-Identity-20-Implementing-Group-Based-Permissions-Management.aspx

我和你最近一直在研究同样的问题。这涵盖了很多要求,但存在差距 - ASP.NET Identity不区分授权和身份验证。在所有情况下,没有所需权限的用户都会被发送到登录屏幕。如果他们没有登录,那就没问题,但如果他们已登录并试图访问他们没有权限的内容,那就不行了。这可能是在这里解决的,但我还没来得及测试它。

How to make Authorize attribute return custom 403 error page instead of redirecting to the Logon page