我正在将 ASP.NET Web API 应用程序移植到 Web API 2 候选版本。此应用程序使用 MessageHandler 通过解析和解密 HTTP 标头来授权用户。然后它创建一个适当的 ClaimsPrincipal 并设置HttpContext.Current.User
和Thread.CurrentPrincipal
。
在 Web API 1.0 中,控制器可以访问该ApiController.User
属性并获取我之前在消息处理程序中设置的主体。在 Web API 2.0 中, User 属性包含一个有效的空白GenericPrincipal
,即使Thread.CurrentPrincipal
是正确的。
这是故意的吗?它是 Web API 2 的错误(很可能)吗?也许我没有正确设置校长?
我一直在使用ApiController.User
它,因为它似乎比直接使用“更正确” Thread.CurrentPrincipal
,但这始终是解决问题的可能方法。