diff --git a/samples/SampleApp/PooledHttpContext.cs b/samples/SampleApp/PooledHttpContext.cs index 57b5f0e52b..9e124ebaf4 100644 --- a/samples/SampleApp/PooledHttpContext.cs +++ b/samples/SampleApp/PooledHttpContext.cs @@ -21,11 +21,11 @@ namespace SampleApp { if (_pooledHttpRequest != null) { - _pooledHttpRequest.Initialize(this, Features); + _pooledHttpRequest.Initialize(this); return _pooledHttpRequest; } - return new DefaultHttpRequest(this, Features); + return new DefaultHttpRequest(this); } protected override void UninitializeHttpRequest(HttpRequest instance) @@ -38,11 +38,11 @@ namespace SampleApp { if (_pooledHttpResponse != null) { - _pooledHttpResponse.Initialize(this, Features); + _pooledHttpResponse.Initialize(this); return _pooledHttpResponse; } - return new DefaultHttpResponse(this, Features); + return new DefaultHttpResponse(this); } protected override void UninitializeHttpResponse(HttpResponse instance) diff --git a/src/Microsoft.AspNetCore.Http.Abstractions/Authentication/AuthenticationManager.cs b/src/Microsoft.AspNetCore.Http.Abstractions/Authentication/AuthenticationManager.cs index b787a1ed28..0fa5789218 100644 --- a/src/Microsoft.AspNetCore.Http.Abstractions/Authentication/AuthenticationManager.cs +++ b/src/Microsoft.AspNetCore.Http.Abstractions/Authentication/AuthenticationManager.cs @@ -16,6 +16,8 @@ namespace Microsoft.AspNetCore.Http.Authentication /// public const string AutomaticScheme = "Automatic"; + public abstract HttpContext HttpContext { get; } + public abstract IEnumerable GetAuthenticationSchemes(); public abstract Task AuthenticateAsync(AuthenticateContext context); diff --git a/src/Microsoft.AspNetCore.Http/Authentication/DefaultAuthenticationManager.cs b/src/Microsoft.AspNetCore.Http/Authentication/DefaultAuthenticationManager.cs index 5933db0497..24eb05e799 100644 --- a/src/Microsoft.AspNetCore.Http/Authentication/DefaultAuthenticationManager.cs +++ b/src/Microsoft.AspNetCore.Http/Authentication/DefaultAuthenticationManager.cs @@ -14,16 +14,18 @@ namespace Microsoft.AspNetCore.Http.Authentication.Internal { public class DefaultAuthenticationManager : AuthenticationManager { + private HttpContext _context; private FeatureReferences _features; - public DefaultAuthenticationManager(IFeatureCollection features) + public DefaultAuthenticationManager(HttpContext context) { - Initialize(features); + Initialize(context); } - public virtual void Initialize(IFeatureCollection features) + public virtual void Initialize(HttpContext context) { - _features = new FeatureReferences(features); + _context = context; + _features = new FeatureReferences(context.Features); } public virtual void Uninitialize() @@ -31,6 +33,8 @@ namespace Microsoft.AspNetCore.Http.Authentication.Internal _features = default(FeatureReferences); } + public override HttpContext HttpContext => _context; + private IHttpAuthenticationFeature HttpAuthenticationFeature => _features.Fetch(ref _features.Cache, f => new HttpAuthenticationFeature()); diff --git a/src/Microsoft.AspNetCore.Http/DefaultHttpContext.cs b/src/Microsoft.AspNetCore.Http/DefaultHttpContext.cs index 5d0424cf7c..4e99c52964 100644 --- a/src/Microsoft.AspNetCore.Http/DefaultHttpContext.cs +++ b/src/Microsoft.AspNetCore.Http/DefaultHttpContext.cs @@ -173,16 +173,16 @@ namespace Microsoft.AspNetCore.Http.Internal } - protected virtual HttpRequest InitializeHttpRequest() => new DefaultHttpRequest(this, Features); + protected virtual HttpRequest InitializeHttpRequest() => new DefaultHttpRequest(this); protected virtual void UninitializeHttpRequest(HttpRequest instance) { } - protected virtual HttpResponse InitializeHttpResponse() => new DefaultHttpResponse(this, Features); + protected virtual HttpResponse InitializeHttpResponse() => new DefaultHttpResponse(this); protected virtual void UninitializeHttpResponse(HttpResponse instance) { } protected virtual ConnectionInfo InitializeConnectionInfo() => new DefaultConnectionInfo(Features); protected virtual void UninitializeConnectionInfo(ConnectionInfo instance) { } - protected virtual AuthenticationManager InitializeAuthenticationManager() => new DefaultAuthenticationManager(Features); + protected virtual AuthenticationManager InitializeAuthenticationManager() => new DefaultAuthenticationManager(this); protected virtual void UninitializeAuthenticationManager(AuthenticationManager instance) { } protected virtual WebSocketManager InitializeWebSocketManager() => new DefaultWebSocketManager(Features); diff --git a/src/Microsoft.AspNetCore.Http/DefaultHttpRequest.cs b/src/Microsoft.AspNetCore.Http/DefaultHttpRequest.cs index f133c993a0..2d5abcf7af 100644 --- a/src/Microsoft.AspNetCore.Http/DefaultHttpRequest.cs +++ b/src/Microsoft.AspNetCore.Http/DefaultHttpRequest.cs @@ -16,15 +16,15 @@ namespace Microsoft.AspNetCore.Http.Internal private HttpContext _context; private FeatureReferences _features; - public DefaultHttpRequest(HttpContext context, IFeatureCollection features) + public DefaultHttpRequest(HttpContext context) { - Initialize(context, features); + Initialize(context); } - public virtual void Initialize(HttpContext context, IFeatureCollection features) + public virtual void Initialize(HttpContext context) { _context = context; - _features = new FeatureReferences(features); + _features = new FeatureReferences(context.Features); } public virtual void Uninitialize() diff --git a/src/Microsoft.AspNetCore.Http/DefaultHttpResponse.cs b/src/Microsoft.AspNetCore.Http/DefaultHttpResponse.cs index 0676913d62..6105ff1c5b 100644 --- a/src/Microsoft.AspNetCore.Http/DefaultHttpResponse.cs +++ b/src/Microsoft.AspNetCore.Http/DefaultHttpResponse.cs @@ -15,15 +15,15 @@ namespace Microsoft.AspNetCore.Http.Internal private HttpContext _context; private FeatureReferences _features; - public DefaultHttpResponse(HttpContext context, IFeatureCollection features) + public DefaultHttpResponse(HttpContext context) { - Initialize(context, features); + Initialize(context); } - public virtual void Initialize(HttpContext context, IFeatureCollection features) + public virtual void Initialize(HttpContext context) { _context = context; - _features = new FeatureReferences(features); + _features = new FeatureReferences(context.Features); } public virtual void Uninitialize()