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



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

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

ProfileSettings.Notification.SendEmails

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

我想到的流程是:

  1. API 接收调用
  2. 在某些过滤器中(我猜?(,我们找出它是哪个用户,然后根据用户,我们找到正确的配置文件
  3. 我们根据结果设置一些全局变量
  4. 服务可以使用这个

我的问题是:

这是正确的方法吗?您将如何根据您收到呼叫的令牌/用户设置一些"全局设置"?

由于令牌用于授权用户,因此您可以将配置文件详细信息作为声明添加到用户原则中,一旦成功进行身份验证/授权,该声明应与请求相关联。

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);
}
}
//...

最新更新