![](/img/trans.png)
[英]Windows authentication based role management in ASP.NET Web Application
[英]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.