从用户声明填充控制器字段



如何从用户声明填充控制器字段?我们使用基于声明的身份验证,我对其中一个声明值感兴趣,例如"内部ID",该值与用户声明一起发送。

我需要提取此声明值,并使其可用于我的所有 Web API。我知道我可以使用每个操作方法中的循环从用户声明中提取值。

有没有更好的方法可以做到这一点?像属性/值提供者<</p>

div class="one_answers">一样,

您可以在 IIdentity 上使用扩展方法来提取声明,这就是我的做法:

    public static int GetInternalId(this IIdentity identity)
    {
        var storedClaim = ((ClaimsIdentity)identity).FindFirstValue("InternalId");
        if (string.IsNullOrEmpty(storedClaim)) return 0;
        var value = Convert.ToInt32(storedClaim);
        return value;
    }

您可以在任何可以访问上下文对象(如控制器或 ApiController )的地方调用它

User.Identity.GetInternalId();

可以创建一个自定义值提供程序,用于从当前用户标识读取声明,然后拥有一个表示键/值对列表的类,该列表是操作方法中的声明/值。

这将导致值提供程序填充键/值对,并且无需编写任何其他代码即可在任何操作方法中让用户声明

最新更新