我已经实现了一个系统,在该系统中,仅当用户在其权利要求中拥有该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。 ...
尝试一下:
您可以使用Enumerable.Any()
扩展方法
您应该使用HasClaim
方法可以在其中传递声明类型和值