認証 Cookie タイムアウトをリセットしない認証済み Web API 要求を実行しようとしています。MVC の世界では、応答から FormsAuthenication Cookie を削除することでこれを実現します。
Response.Cookies.Remove(System.Web.Security.FormsAuthentication.FormsCookieName);
Web API 2 では、カスタム IHttpActionResult を作成し、応答から Set-Cookie ヘッダーを削除しています。ただし、このアクション結果を使用するリクエストの認証 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 で応答ヘッダーを編集するにはどうすればよいですか。