public async Task Should_not_append_empty_header_as_vary() { await sut.OnActionExecutionAsync(executingContext, () => { cachingManager.AddHeader(string.Empty); return(Task.FromResult(executedContext)); }); Assert.Equal("Auth-State", httpContext.Response.Headers[HeaderNames.Vary]); }
private void AppendAuthHeaders(HttpContext httpContext) { cachingManager.AddHeader("Auth-State"); if (!string.IsNullOrWhiteSpace(httpContext.User.OpenIdSubject())) { cachingManager.AddHeader(HeaderNames.Authorization); } else if (!string.IsNullOrWhiteSpace(httpContext.User.OpenIdClientId())) { cachingManager.AddHeader("Auth-ClientId"); } }
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { var httpContext = context.HttpContext; cachingManager.Start(httpContext); cachingManager.AddHeader("Auth-State"); if (!string.IsNullOrWhiteSpace(httpContext.User.OpenIdSubject())) { cachingManager.AddHeader(HeaderNames.Authorization); } else if (!string.IsNullOrWhiteSpace(httpContext.User.OpenIdClientId())) { cachingManager.AddHeader("Auth-ClientId"); } var resultContext = await next(); if (httpContext.Response.Headers.TryGetString(HeaderNames.ETag, out var etag)) { if (!cachingOptions.StrongETag && !etag.StartsWith("W/", StringComparison.OrdinalIgnoreCase)) { etag = $"W/{etag}"; httpContext.Response.Headers[HeaderNames.ETag] = etag; } if (HttpMethods.IsGet(httpContext.Request.Method) && httpContext.Response.StatusCode == 200 && httpContext.Request.Headers.TryGetString(HeaderNames.IfNoneMatch, out var noneMatch) && string.Equals(etag, noneMatch, StringComparison.Ordinal)) { resultContext.Result = new StatusCodeResult(304); } } cachingManager.Finish(httpContext); }