繁体   English   中英

确保基于Web api角色的安全

[英]Securing Web api Role Based

希望您还好,这是我的第一个问题,我真的不知道从哪里开始,所以就在这里,

我一直在尝试使用Microsoft Web api模板构建示例,在该示例中,我必须根据角色(例如“管理员,主持人等...”)授权用户,所以我不想将所有这些都放进去。控制器顶部的角色,例如

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

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

另一个问题是如何构建一个出色的authorzationfilter,该过滤器可以管理用户是否具有主持人角色等功能,但他唯一的权利是在控制器中使用Create操作?

希望您能帮我举例。

PS。 对不起我的英语不好

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

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

在数据库中,您具有权限表,RolesTable,RolePermissions表和UsersInRole表。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM