【发布时间】:2021-05-16 04:07:07
【问题描述】:
我在这里得到误报。基本上,我想要发生的只是返回一个错误,例如,如果用户无权执行Create,但目前即使他们拥有该权限,它也会返回一个错误。
| User | Permission | Active |
|---|---|---|
| 12 | Create | True |
| 12 | Update | False |
| 12 | Delete | True |
第一个例子
以下应返回true。确实如此,但这是误报,因为 Read、Update 和 Delete 不存在。
[HasPermission("Create");
第二个例子
应该返回false,但也返回Read和Delete不存在,而我只要求Create和Update:
[HasPermission("Create,Update");
代码
string[] permissionValues = permission.Split(",");
Dictionary<string, bool> dict = new Dictionary<string, bool>();
foreach (var item in permissionValues)
{
var permissions = db.AppWarehouseUserPermmissions.Any(w => w.Name == item && w.Controller == controllerName && w.isAcitve == true);
dict.Add(item, permissions);
}
foreach (var item in dict)
{
if (item.Key == "Create" || item.Key == "Read" || item.Key == "Update" || item.Key == "Delete" && item.Value == true)
{
isAuthorised = true;
}
if (item.Key == "Create" || item.Key == "Read" || item.Key=="Update" || item.Key=="Delete" && item.Value==false)
{
_customError.Add(new CutomError() { Message = $"User has no {item.Key} permissions", ErrorCode = item.Key });
}
}
return isAuthorised;
【问题讨论】:
标签: c# asp.net-core