我的Web-API服务中有一个DelegatingHandler,它根据提供的头在Thread.CurrentPrincipal和HttpContext.Current.User上设置一个自定义IPrincipal(ServicePrincipal)。这一切都是在对SendAsync的调用上完成的。
然而,当调用进入Controller时,User属性、HttpContext.User和Thread.CurrentPrincipal都神秘地设置为RolePrincipal。
有人知道我做错了什么,或者如何防止设置额外的主体吗?
谢谢,
Kieron
我知道这个问题很老了,但我在试图从覆盖DelegatingHandler.SendAsync()
的函数中获取当前用户时遇到了类似的问题。IPrincipal
对象似乎直到调用base.SendAsync()
之后才被初始化。调用该行之后,IPrincipal
对象应该具有用户信息。
我使用了request.GetRequestContext().Principal
来检索它,但我猜Thread.CurrentPrincipal
也会起作用。