1

我有一个托管在 WebProject 中的 RESTful WCF 应用程序。我正在使用 HttpModule 对传入请求的标头进行身份验证,如果标头和 URL 有效,我将两者都设置

System.Threading.Thread.CurrentPrincipal = myCustomPrincipal;

这对于 GET 请求非常有效,但是当我执行 POST 并检查 Thread.CurrentPrincipal 时,它被设置为 WindowsPrincipal 类的实例。我在一些博客文章中读到 HttpContext.Current.User 和 Thread.CurrentPrincipal 都应该设置为相同的 IPrincipal 对象,但是当我分配

HttpContext.Current.User = myCurrentPrincipal;

我的服务永远不会受到打击,并且正在发回我从未实际分配过的 401 UnAuthorized 消息。

请注意,我在我的 context_PostAuthorizeRequest 方法中分配了这些主体,该方法已附加到上下文的命名处理程序。

请帮忙。我究竟做错了什么?下面是我的 webconfig 的 httpModules 配置示例:

<httpModules>
  <add name="PublicServiceSecurity" type="Company.PublicService.PublicServiceSecurity,PublicService" />
  <add name="ErrorModule" type="Company.Web.ErrorModule,WebComponentLibrary" />
  <add name="HbnSessionModule" type="Company.Web.HbnSessionModule,WebComponentLibrary" />
</httpModules>
4

0 回答 0