如何在Web API中进行身份验证后设置全局变量?

时间:2017-08-25 17:11:27

标签: c# rest api asp.net-web-api asp.net-web-api2

我的网络API使用OAUTH身份验证。这意味着对API的所有调用都包含一个令牌,该令牌是某种用户。

现在,我想做的是根据令牌设置全局变量。在实践中,我有一系列用户,根据用户,我想应用不同的“配置文件”。这意味着在我的服务层中,我希望能够访问诸如以下的调用:

ProfileSettings.Notification.SendEmails

当我收到带有令牌的API调用时,我想设置这个全局值。

我想到的流程是:

  1. API接到来电
  2. 在某些过滤器中(我猜?)我们找出它是哪个用户,然后根据用户的不同,我们找到了正确的配置文件
  3. 我们根据结果设置一些全局变量
  4. 服务可以使用此
  5. 我的问题是:

    这是正确的做法吗?您将如何设置一些“全局设置”,具体取决于您接到来电的令牌/用户?

1 个答案:

答案 0 :(得分:2)

由于令牌用于授权用户,您可以将配置文件详细信息添加为用户原则的声明,该原则应该在成功验证/授权后与请求相关联。

const string SendEmails = "ProfileSettings.Notification.SendEmails"

//...as IPrincipal being set

if (identity != null && identity.IsAuthenticated) {
    ClaimsIdentity claimsIdentity = identity as ClaimsIdentity;
    if (claimsIdentity != null) {
        var claim = new Claim(SendEmails, "{set value based on user}");
        claimsIdentity.AddClaim(claim);
    }
}

//...