c# - 在 ASP.NET-Core 2.2 中检索给定类型的声明集合
问题描述
我已经实现了一个系统,允许用户访问给定的 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 类型的接收器
请问我怎样才能做到这一点。我感谢你的努力
解决方案
您应该使用HasClaim
可以传递声明类型和值的方法
User.HasClaim("UserRoutes", "courses/create")
推荐阅读
- ios - 自定义 UIView 委托
- css - Nuxtjs VueMeta css 顺序
- python-3.6 - 只要线路被填满,Python 中的井字游戏就会获胜
- java - 仅通过 Firestore 为当前登录用户存储数据
- c# - 使用epplus将excel保存为电子表格xml 2003
- python - 如何将单词数转换为 Python 中的实际单词列表
- c# - 将 ReportViewer 中的工具栏移至页面底部
- apache-flink - dA平台试用虚拟机运行失败
- wordpress - 重定向到特定页面 - .htaccess、wordpress
- linux - 为什么在 Digital Ocean 上没有正确设置主机名 FQDN?