1

我正在使用 HttpClient 和自托管 api 对我的 WebAPI 进行单元测试。我有一个基于客户端发送的 API 密钥的自定义 MessageHandler 设置主体。我的控制器受 [Authorize] 属性保护,但我的测试调用进入,因为 User.Identity 填充了我的 Windows 用户名。从我的测试中进行 HttpClient 调用时,如何确保未设置用户?

4

1 回答 1

2

MessageHandler如果 API 密钥未提供或无效,您的自定义应将 User 设置为 null:

IPrincipal principal = null;

if (IsValidApiKey(someKey))
{
    // The provided API key is valid => we populate the principal
    principal = ...
}

Thread.CurrentPrincipal = principal;
if (HttpContext.Current != null)
{
    HttpContext.Current.User = principal;
}
于 2013-05-17T11:55:02.993 回答