asp.net core cookie身份认证view视图中读取/读取User.Claims中的值实例

假设claim如下,q为查询出来的用户表结果集

var claims = new List<Claim>(){
new Claim("UserId", q.Id.ToString()),
new Claim(ClaimTypes.Name, q.UserName),
new Claim(ClaimTypes.Role,q.UserGroup.GroupName),
new Claim("RealName", q.RealName)
};

第一种

在view视图中将Claims转换成字典,这样就可以用键值的方式访问

@{
var currUser = User.Claims.ToDictionary(o => o.Type, o => o.Value);
}

@currUser.GetValueOrDefault("RealName")

注:RealName区分大小写

 

第二种 通过claims的linq查询

@User.Claims.FirstOrDefault(o => o.Type == "realName")?.Value

注:字符串区分大小写;加问号?的意思是避免为空抛出异常,这里很巧妙。

 

第三种 通过User的方法

@User.FindFirstValue("realName") 或 @User.FindFirst("Realname")?.Value

注:不区分大小写;注意问号的用法

综上所述:推荐使用第三种,很简略,另外读取系统ClaimTypes.Role注意引用相对应的命名空间:@using System.Security.Claims;

声明:本站内容来源于原创和互联网,尊重作者版权,转载请注明来源网址,欢迎收藏,谢谢!