如何在 ASP.NET Identity 中获取索赔值的最大值?

Posted

技术标签:

【中文标题】如何在 ASP.NET Identity 中获取索赔值的最大值?【英文标题】:How to get max value of claims value in ASP.NET Identity? 【发布时间】:2021-12-31 07:03:43 【问题描述】:

在我的例子中,用户可能有多个角色,例如用户可能是管理员和系统管理员。

在管理员角色中,他拥有声明 ("Employee.Add", "Allow"),在系统管理员角色中拥有声明 ("Employee.Add", "Deny")。在我的情况下,该用户在尝试添加员工时必须获得授权。

如何使用策略获得此信息?

【问题讨论】:

【参考方案1】:

根据您的描述,我建议您可以尝试使用 asp.net core Policy 的 RequireAssertion 方法来实现您的要求。

更多细节,您可以参考以下代码:

        services.AddAuthorization(options => 
            options.AddPolicy("TestAccess", policy => policy.RequireAssertion(context =>
            
               // you could modify below codes due to your requirement
               var re= context.User.Claims.Where(x => x.Type == "Employee.Add").First();
                if (re != null)
                
                    if (re.Value == "Allow")
                    
                        return true;
                    
                    else
                    
                        return false;
                    

                
                else
                
                    return false;
                
            ));
        );

然后在控制器中,您可以使用以下代码:

[Authorize(Policy = "TestAccess")]
public class VacationController : Controller

更多细节,你可以参考这个article。

【讨论】:

以上是关于如何在 ASP.NET Identity 中获取索赔值的最大值?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET (OWIN) Identity:如何从 Web API 控制器获取 UserID?

ASP.NET Identity 重置密码

ASP.NET Identity 重置密码

在 ASP.NET Identity 2.0 中获取当前用户 ID

ASP.net Identity 2.1 获取所有具有角色的用户

如何撤销存储在 Identity Server 数据库中的 asp net core 中的刷新令牌