0

希望你没事,这是我的第一个问题,我真的不知道从哪里开始,所以在这里,

我一直在尝试使用 Microsoft Web api 模板构建一个示例,我必须根据角色授权用户,例如“管理员、版主等......”所以,问题是我不想把所有这些控制器顶部的角色,例如

[Authorize ( Roles ="Admin, Moderators, etc...")]

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

另一个问题是如何构建一个伟大的授权过滤器,它可以管理用户是否处于主持人角色但他唯一的权利是使用控制器中的创建操作?

我希望你能帮我举个例子......在此先感谢

附言。对不起我的英语不好

4

1 回答 1

1

我同意基于角色的授权在某种程度上受到限制,并且授权属性有点僵化。

在某些场景下,基于角色的授权是不够的,您需要对其进行扩展。您可以引入权限概念。不必要求您必须是特定角色的成员才能执行操作,您可以声明要被授权执行操作,您需要特定权限。因此,您使用RequiredPermisionAttribute 而不是授权属性。当然,您需要编写RequiredPermissionAttribute 作为授权过滤器。

在数据库中,您有 Permissions 表、RolesTable、RolePermissions 表和 UsersInRole 表。

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

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

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

于 2015-02-07T09:08:23.327 回答