我想以特定的方式跟踪用户角色,在我看来,这可能已经存在,但我找不到任何内容。如果这个轮子存在的话,我不想重新创建它。
我希望角色拥有可定义的 CRUD 权限,而不是基于控制器/操作的授权,我可以使用这些权限来过滤数据。
我想我会拥有 CRUD 权限作为一个简单的
Flags enum
:
[Flags]
public enum RolePermission
{
None = 0,
Create = 1,
Read = 2,
Update = 3,
Delete = 4,
}
然后对角色进行建模,如下所示:(使用 EF Core)
public class UserRoles
{
public long Id { get; set; }
public string Name { get; set; }
public RolePermission Users { get; set; }
public RolePermission Cars { get; set; }
public RolePermission OtherUsersCars { get; set; }
public RolePermission Titles { get; set; }
}
然后将这些值作为简单键值对滚动到身份验证令牌中 - UserRoles Id 为键,RolePermission 为值。
使用 EF Core,我可以在上下文中获取用户声明,并执行诸如将响应过滤为仅“此用户的汽车”之类的操作,除非他们具有
OtherUsersCars
读取权限(作为众多示例之一)。
此模式是否有一个名称,或者更好的是,是否有一个已经存在的特定 .net 实现?我发现的所有内容都是“可以或不能访问控制器/操作”模式,这很好,但不是我想要做的。
类似的问题也出现在Stackoverflow上。请查看此内容。 这可能会解决您的问题。