在ASP.NET-Core 2.2中检索声明给定类型的集合

问题描述 投票:0回答:3

我已经实现了一个系统,在该系统中,仅当用户在其权利要求中拥有该URL时,该用户才被允许访问该URL。我创建了一个类型为“ UserRoutes”的声明,并添加了可供用户使用的URL。因此,当用户登录到应用程序时,他/她只能访问其类型为“ UserRoutes”的声明中的那些URL。

现在,我正在寻找一种方法来获取他/她的URL集合,以决定是否显示指向给定URL的链接。

尝试此

  @if (User.FindAll("UserRoutes").Contains("courses/create"))
    {
    <p>
        <a asp-action="Create" class="btn btn-primary my-3"><span class="fa fa-plus-circle"></span> New Course</a>
    </p>
     }

或此

var userRoutes = User.Claims.Where(c => c.Type == "UserRoutes");
if (userRoutes.Contains("courses/create")){
<p>
        <a asp-action="Create" class="btn btn-primary my-3"><span class="fa fa-plus-circle"></span> New Course</a>
    </p>

显示以下错误

IEnumerable'不包含'Contains'的定义,最佳扩展方法重载'ParallelEnumerable.Contains(ParallelQuery,string)'要求类型为'ParallelQuery的接收者>

[我该如何实现?感谢您的努力

我已经实现了一个系统,在该系统中,仅当用户在其权利要求中拥有该URL时,该用户才被允许访问该URL。我创建了一个类型为“ UserRoutes”的声明,并添加了可供用户使用的URL。 ...

c# asp.net-core asp.net-identity claims-based-identity
3个回答
0
投票

尝试一下:


0
投票

您可以使用Enumerable.Any()扩展方法


0
投票

您应该使用HasClaim方法可以在其中传递声明类型和值

© www.soinside.com 2019 - 2024. All rights reserved.