gpt4 book ai didi

asp.net-core - .NET Core-通过自定义权限筛选数据

转载 作者:行者123 更新时间:2023-12-02 04:25:24 24 4
gpt4 key购买 nike

我有一个系统,除了角色以外,我们还拥有对确切数据的权限。例如,用户拥有图书A的权限,但没有权限-图书B-因此他们不会在列表中看到它。我们使用存储所有权限的数据库表对其进行管理。
因此,获取对象列表的方法如下所示:

GetList().Where(x => x.Permissions.Any(p => p.CanRead && p.UserId == userId))

我不确定这是否是一种好方法,因为此代码应该放在每个服务中(即使我们在其中添加了规范)。但是别无其他。这是一个好方法吗?
当我尝试为我们的计划服务使用相同的服务时,这种方法也会给我带来麻烦,因为该服务当然没有用户和任何权限。我该如何解决?

最佳答案

根据文档Chris Pratt的帖子,建议您使用以下授权:

Task<AuthorizationResult> AuthorizeAsync(ClaimsPrincipal user,
object resource,
IEnumerable<IAuthorizationRequirement> requirements);
Task<AuthorizationResult> AuthorizeAsync(ClaimsPrincipal user,
object resource,
string policyName);

我在“ View ”中有一个示例,显示以下书籍A的按钮“ View ”,但在下面的书籍B中却没有:

首先,我有3个角色(“管理员”,“用户”,“工作人员”)-角色Admin可以读取书籍A和B,但是角色Staff只能读取书籍A。然后,当工作人员登录时,AuthorizationService将检查权限' READ”,并且如果该员工没有允许阅读B书,则不会出现“查看”按钮:
@if ((await AuthorizationService.AuthorizeAsync(User, "STAFF", Operations.Read)).Succeeded)
{
<div>
<div class="input-group-btn">
<button id="btnRead" class="form-control btn-info">View</button>
</div>
</div>
}

并且,在“角色”页面中,您还需要一个表格来为每本书分配每个权限。您使用admin帐户,并且对于每个角色都有一个树或表来显示所有书籍类别,每个书籍类别将具有“读取”,“删除”,“创建”复选框。然后,如果选中“工作人员”角色中的“删除” bookB复选框,则所有工作人员帐户都有权删除图书B。希望获得帮助!

关于asp.net-core - .NET Core-通过自定义权限筛选数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com