0

我希望你没事,这是我的第一个问题,我真的不知道从哪里开始,所以这里是,保护Web API基于角色的

我一直在试图建立一个样本与微软的Web API模板在那里我有例如基于角色的授权用户“管理员,版主等......”这样的事情是我不想把所有的这些角色像

控制器的顶部
[Authorize (Roles ="Admin, Moderators, etc...")] 

我认为这不是一个好的做法,因为如果我在我的数据库中创建另一个角色会发生什么?我将不得不修改控制器来添加新的角色xD,真的很糟糕,不是吗?所以问题是。如何扩展一些类如AuthorizeFilter以从数据库获取角色并使用控制器进行验证?我的意思是,如果有角色管理员的用户授权并反之亦然?

另一个问题是如何建立一个伟大的authorzationfilter可以管理像如果用户如果主持人的角色,但他唯一的权利是用户控制器创建行动?

我希望你能帮助我用一个例子...提前

诗 感谢。对不起,我的英语

回答

1

我同意基于角色的授权以某种方式限制和授权的属性是有点僵硬。

在某些情况下基于角色的授权是不够的,你需要扩展它。您可以介绍权限概念。与其要求您必须是执行某个操作的特定角色的成员,您可以声明被授权执行的操作需要特定的权限。因此,使用RequiredPermisionAttribute而不是授权属性。当然你需要编写RequiredPermissionAttribute作为授权过滤器。

在数据库中你有权限表,该RolesTable的RolePermissions表和UsersInRole表。

因此,一个用户可以是一个或多个角色的成员。角色可以拥有一个或多个权限。如果用户是具有该权限的角色的成员,则该用户具有特定的权限。

必需的权限过滤器会检查登录的用户是否具有权限的角色的成员,如果不是,则返回401未经授权。

这是一种更灵活的方法,操作不与角色绑定,角色没有固定数量的权限。

+0

太棒了!正文,我想到了,我正在构建自己的权限表,并将角色表与其他用途一起用作将用户添加到管理员角色,然后为他分配权限(编辑,创建,删除)并在我的行动的顶部我管理权限。非常感谢。 – AVMP 2015-03-07 01:33:31