我正在尝试执行一个经过身份验证的 Web api 请求,该请求不会重置身份验证 cookie 超时。在 MVC 世界中,我将通过从响应中删除 FormsAuthenication cookie 来完成此操作:
Response.Cookies.Remove(System.Web.Security.FormsAuthentication.FormsCookieName);
在 Web API 2 中,我编写了一个自定义 IHttpActionResult,并从响应中删除了 Set-Cookie 标头。然而,这并没有删除标头,因为当为使用此操作结果的请求更新 auth cookie 时,我仍然看到 Set-Cookie 标头。
这是自定义的 IHttpActionResult:
public class NonAuthResetResult<T> : IHttpActionResult where T: class
{
private HttpRequestMessage _request;
private T _body;
public NonAuthResetResult(HttpRequestMessage request, T body)
{
_request = request;
_body = body;
}
public string Message { get; private set; }
public HttpRequestMessage Request { get; private set; }
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
var msg = _request.CreateResponse(_body);
msg.Headers.Remove("Set-Cookie");
return Task.FromResult(msg);
}
}
如何在 Web API 2 中编辑响应标头,因为这不起作用。