我在寻找包装器的索赔,但没有发现任何东西,因此我认为这是不可能实现的,或者太容易以至于我遗漏了某些东西。
我想尝试实现一些我可以用来访问或添加新声明的内容,但是我不知道从哪里开始。
例如...
HttpContext.User.Claims.FirstOrDefault(c => c.Type == "Referencia").Value
我在哪里可以编写一个类来包装声明并告诉我的应用使用该类?
我只是想做这样的事情
_claimsWrapper.GetClaim();
答案 0 :(得分:1)
要点是我可以在登录期间添加自定义声明的强类型声明,并编写更少的代码,如您在帖子中的长字符串上所见,再加上很高兴看到返回的类型,有时我会忘记是int或字符串
您可以创建C#扩展类,例如
public static class ClaimsIdentitExtensions
{
public static string GetReferencia(this ClaimsPrincipal user)
{
return user.Claims.FirstOrDefault(c => c.Type == "Referencia")?.Value;
}
}
在您的控制器中,您可以执行以下操作:
User.GetReferencia();
在视图中,您可以使用:
@User.GetReferencia()
如果您需要这是一个模型,则可以将用户传递给模型(例如,构造函数)