创建围绕Asp.Net核心声明的强类型包装器

时间:2019-06-23 14:09:52

标签: c# asp.net-core

我在寻找包装器的索赔,但没有发现任何东西,因此我认为这是不可能实现的,或者太容易以至于我遗漏了某些东西。

我想尝试实现一些我可以用来访问或添加新声明的内容,但是我不知道从哪里开始。

例如...

 HttpContext.User.Claims.FirstOrDefault(c => c.Type == "Referencia").Value

我在哪里可以编写一个类来包装声明并告诉我的应用使用该类?

我只是想做这样的事情

_claimsWrapper.GetClaim();

1 个答案:

答案 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()

如果您需要这是一个模型,则可以将用户传递给模型(例如,构造函数)