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

时间:2016-02-02 12:48:37

标签: asp.net-mvc claims-based-identity claims

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

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

有更好的方法吗?像某个属性/价值提供者

2 个答案:

答案 0 :(得分:0)

您可以在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;
    }

你可以在任何可以访问Context对象的地方调用它,比如Controller或ApiController

User.Identity.GetInternalId();

答案 1 :(得分:0)

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

这将使价值提供者填写键/值对,您不必编写任何其他代码以让用户声明任何操作方法