【发布时间】:2019-05-13 19:35:22
【问题描述】:
为了让我的服务层能够在需要时随时访问当前的用户 ID,我使用了 Thread.CurrentPrincipal。
服务层由两个前端层使用,一个 MVC App 和一个用于移动应用的 MVC Web Api。
在 Web 应用程序中,我使用表单身份验证,并将 Principal 设置为 Application_PostAuthenticateRequest。它工作正常。
在 web Api 中,我使用 Owin。但是在使用访问令牌对每个请求进行身份验证后,我找不到设置该 Principal 的方法。
当用户通过将GrantResourceOwnerCredentials 覆盖到我的OAuthAuthorizationServerProvider 中使用其凭据登录时,或者当他通过在同一类中覆盖GrantRefreshToken 使用其刷新令牌登录时,我可以做到这一点。
但是我可以在哪里将它分配给使用访问令牌自动进行身份验证的请求?
注意。我知道在我的 Api 控制器中我可以访问当前用户,并且它已正确设置,但我不想在每次调用我的服务层时将其传递。
谢谢。
【问题讨论】:
-
静态类不会给所有调用者相同的值吗?
-
编辑问题:静态类只设置 Thread.CurrentPrincipal。
标签: asp.net-mvc asp.net-web-api oauth owin