2013-07-18 36 views
1

我在我的Web-API服务中有一个DelegatingHandler,根据提供的头文件,在Thread.CurrentPrincipal和HttpContext.Current.User上设置一个自定义IPrincipal(ServicePrincipal)。这一切都是在致电SendAsync时完成的。Web-API,DelegatingHandler和安全性。校长重置在控制器

但是,当调用进入Controller时,User属性,HttpContext.User和Thread.CurrentPrincipal都被神秘地设置为RolePrincipal。

有谁知道我做错了什么,或者如何防止额外的委托人被设置?

感谢,
基隆

+1

确保角色管理者被禁用 – leastprivilege

+0

更好... HttpContext.User现在正确,但Thread.CurrentPrincipal仍然是RolePrincipal - 所以请求仍然无法验证... – Kieron

+0

您是否曾经找到解决方案?我有一个可能从您的解决方案中受益的正切问题。 – JohnC

回答

1

我知道这个问题是旧的,但我有一个类似的问题试图从覆盖DelegatingHandler.SendAsync()一个函数中获取当前用户。在调用base.SendAsync()之前,IPrincipal对象似乎不会被初始化。在该行被调用之后,IPrincipal对象应该具有用户信息。

我用request.GetRequestContext().Principal找回它,但我猜Thread.CurrentPrincipal也可以。