IInitializeOptions => IPostConfigureOptions

This commit is contained in:
Hao Kung 2017-06-02 14:28:03 -07:00
parent 4034158c61
commit db9ae62632
21 changed files with 51 additions and 56 deletions

View File

@ -10,21 +10,21 @@ namespace Microsoft.AspNetCore.Authentication.Cookies
/// <summary>
/// Used to setup defaults for all <see cref="CookieAuthenticationOptions"/>.
/// </summary>
public class CookieAuthenticationInitializer : IInitializeOptions<CookieAuthenticationOptions>
public class PostConfigureCookieAuthenticationOptions : IPostConfigureOptions<CookieAuthenticationOptions>
{
private readonly IDataProtectionProvider _dp;
public CookieAuthenticationInitializer(IDataProtectionProvider dataProtection)
public PostConfigureCookieAuthenticationOptions(IDataProtectionProvider dataProtection)
{
_dp = dataProtection;
}
/// <summary>
/// Invoked to initialize a TOptions instance.
/// Invoked to post configure a TOptions instance.
/// </summary>
/// <param name="name">The name of the options instance being initialized.</param>
/// <param name="options">The options instance to initialize.</param>
public void Initialize(string name, CookieAuthenticationOptions options)
/// <param name="name">The name of the options instance being configured.</param>
/// <param name="options">The options instance to configure.</param>
public void PostConfigure(string name, CookieAuthenticationOptions options)
{
options.DataProtectionProvider = options.DataProtectionProvider ?? _dp;

View File

@ -21,7 +21,7 @@ namespace Microsoft.Extensions.DependencyInjection
public static IServiceCollection AddCookieAuthentication(this IServiceCollection services, string authenticationScheme, Action<CookieAuthenticationOptions> configureOptions)
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IInitializeOptions<CookieAuthenticationOptions>, CookieAuthenticationInitializer>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureOptions<CookieAuthenticationOptions>, PostConfigureCookieAuthenticationOptions>());
return services.AddScheme<CookieAuthenticationOptions, CookieAuthenticationHandler>(authenticationScheme, configureOptions);
}
}

View File

@ -3,6 +3,7 @@
using System;
using Microsoft.AspNetCore.Authentication.Facebook;
using Microsoft.AspNetCore.Authentication.Facebook.Internal;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.Extensions.DependencyInjection

View File

@ -4,9 +4,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.AspNetCore.Authentication.Facebook
namespace Microsoft.AspNetCore.Authentication.Facebook.Internal
{
internal class FacebookConfigureOptions : ConfigureDefaultOptions<FacebookOptions>
public class FacebookConfigureOptions : ConfigureDefaultOptions<FacebookOptions>
{
public FacebookConfigureOptions(IConfiguration config) :
base(FacebookDefaults.AuthenticationScheme,

View File

@ -3,6 +3,7 @@
using System;
using Microsoft.AspNetCore.Authentication.Google;
using Microsoft.AspNetCore.Authentication.Google.Internal;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.Extensions.DependencyInjection

View File

@ -4,9 +4,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.AspNetCore.Authentication.Google
namespace Microsoft.AspNetCore.Authentication.Google.Internal
{
internal class GoogleConfigureOptions : ConfigureDefaultOptions<GoogleOptions>
public class GoogleConfigureOptions : ConfigureDefaultOptions<GoogleOptions>
{
public GoogleConfigureOptions(IConfiguration config) :
base(GoogleDefaults.AuthenticationScheme,

View File

@ -4,9 +4,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.AspNetCore.Authentication.JwtBearer
namespace Microsoft.AspNetCore.Authentication.JwtBearer.Internal
{
internal class JwtBearerConfigureOptions : ConfigureDefaultOptions<JwtBearerOptions>
public class JwtBearerConfigureOptions : ConfigureDefaultOptions<JwtBearerOptions>
{
// Bind to "Bearer" section by default
public JwtBearerConfigureOptions(IConfiguration config) :

View File

@ -3,6 +3,7 @@
using System;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authentication.JwtBearer.Internal;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options.Infrastructure;
@ -19,7 +20,7 @@ namespace Microsoft.Extensions.DependencyInjection
public static IServiceCollection AddJwtBearerAuthentication(this IServiceCollection services, string authenticationScheme, Action<JwtBearerOptions> configureOptions)
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IInitializeOptions<JwtBearerOptions>, JwtBearerInitializer>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureOptions<JwtBearerOptions>, JwtBearerPostConfigureOptions>());
services.AddSingleton<ConfigureDefaultOptions<JwtBearerOptions>, JwtBearerConfigureOptions>();
return services.AddScheme<JwtBearerOptions, JwtBearerHandler>(authenticationScheme, configureOptions);
}

View File

@ -12,14 +12,14 @@ namespace Microsoft.AspNetCore.Authentication.JwtBearer
/// <summary>
/// Used to setup defaults for all <see cref="JwtBearerOptions"/>.
/// </summary>
public class JwtBearerInitializer : IInitializeOptions<JwtBearerOptions>
public class JwtBearerPostConfigureOptions : IPostConfigureOptions<JwtBearerOptions>
{
/// <summary>
/// Invoked to initialize a JwtBearerOptions instance.
/// Invoked to post configure a JwtBearerOptions instance.
/// </summary>
/// <param name="name">The name of the options instance being initialized.</param>
/// <param name="options">The options instance to initialize.</param>
public void Initialize(string name, JwtBearerOptions options)
/// <param name="name">The name of the options instance being configured.</param>
/// <param name="options">The options instance to configure.</param>
public void PostConfigure(string name, JwtBearerOptions options)
{
if (string.IsNullOrEmpty(options.TokenValidationParameters.ValidAudience) && !string.IsNullOrEmpty(options.Audience))
{

View File

@ -4,9 +4,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.AspNetCore.Authentication.MicrosoftAccount
namespace Microsoft.AspNetCore.Authentication.MicrosoftAccount.Internal
{
internal class MicrosoftAccountConfigureOptions : ConfigureDefaultOptions<MicrosoftAccountOptions>
public class MicrosoftAccountConfigureOptions : ConfigureDefaultOptions<MicrosoftAccountOptions>
{
// Bind to "Microsoft" section by default
public MicrosoftAccountConfigureOptions(IConfiguration config) :

View File

@ -3,6 +3,7 @@
using System;
using Microsoft.AspNetCore.Authentication.MicrosoftAccount;
using Microsoft.AspNetCore.Authentication.MicrosoftAccount.Internal;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.Extensions.DependencyInjection

View File

@ -19,7 +19,7 @@ namespace Microsoft.Extensions.DependencyInjection
where TOptions : OAuthOptions, new()
where THandler : OAuthHandler<TOptions>
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IInitializeOptions<TOptions>, OAuthInitializer<TOptions, THandler>>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureOptions<TOptions>, OAuthPostConfigureOptions<TOptions, THandler>>());
return services.AddRemoteScheme<TOptions, THandler>(authenticationScheme, authenticationScheme, configureOptions);
}
}

View File

@ -12,18 +12,18 @@ namespace Microsoft.Extensions.DependencyInjection
/// <summary>
/// Used to setup defaults for the OAuthOptions.
/// </summary>
public class OAuthInitializer<TOptions, THandler> : IInitializeOptions<TOptions>
public class OAuthPostConfigureOptions<TOptions, THandler> : IPostConfigureOptions<TOptions>
where TOptions : OAuthOptions, new()
where THandler : OAuthHandler<TOptions>
{
private readonly IDataProtectionProvider _dp;
public OAuthInitializer(IDataProtectionProvider dataProtection)
public OAuthPostConfigureOptions(IDataProtectionProvider dataProtection)
{
_dp = dataProtection;
}
public void Initialize(string name, TOptions options)
public void PostConfigure(string name, TOptions options)
{
options.DataProtectionProvider = options.DataProtectionProvider ?? _dp;
if (options.Backchannel == null)

View File

@ -4,7 +4,7 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.AspNetCore.Authentication.OpenIdConnect
namespace Microsoft.AspNetCore.Authentication.OpenIdConnect.Internal
{
internal class OpenIdConnectConfigureOptions : ConfigureDefaultOptions<OpenIdConnectOptions>
{

View File

@ -3,6 +3,7 @@
using System;
using Microsoft.AspNetCore.Authentication.OpenIdConnect;
using Microsoft.AspNetCore.Authentication.OpenIdConnect.Internal;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options.Infrastructure;
@ -19,7 +20,7 @@ namespace Microsoft.Extensions.DependencyInjection
public static IServiceCollection AddOpenIdConnectAuthentication(this IServiceCollection services, string authenticationScheme, Action<OpenIdConnectOptions> configureOptions)
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IInitializeOptions<OpenIdConnectOptions>, OpenIdConnectInitializer>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureOptions<OpenIdConnectOptions>, OpenIdConnectPostConfigureOptions>());
services.AddSingleton<ConfigureDefaultOptions<OpenIdConnectOptions>, OpenIdConnectConfigureOptions>();
return services.AddRemoteScheme<OpenIdConnectOptions, OpenIdConnectHandler>(authenticationScheme, authenticationScheme, configureOptions);
}

View File

@ -14,21 +14,21 @@ namespace Microsoft.AspNetCore.Authentication.OpenIdConnect
/// <summary>
/// Used to setup defaults for all <see cref="OpenIdConnectOptions"/>.
/// </summary>
public class OpenIdConnectInitializer : IInitializeOptions<OpenIdConnectOptions>
public class OpenIdConnectPostConfigureOptions : IPostConfigureOptions<OpenIdConnectOptions>
{
private readonly IDataProtectionProvider _dp;
public OpenIdConnectInitializer(IDataProtectionProvider dataProtection)
public OpenIdConnectPostConfigureOptions(IDataProtectionProvider dataProtection)
{
_dp = dataProtection;
}
/// <summary>
/// Invoked to initialize a TOptions instance.
/// Invoked to post configure a TOptions instance.
/// </summary>
/// <param name="name">The name of the options instance being initialized.</param>
/// <param name="options">The options instance to initialize.</param>
public void Initialize(string name, OpenIdConnectOptions options)
/// <param name="name">The name of the options instance being configured.</param>
/// <param name="options">The options instance to configure.</param>
public void PostConfigure(string name, OpenIdConnectOptions options)
{
options.DataProtectionProvider = options.DataProtectionProvider ?? _dp;

View File

@ -4,9 +4,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options.Infrastructure;
namespace Microsoft.AspNetCore.Authentication.Twitter
namespace Microsoft.AspNetCore.Authentication.Twitter.Internal
{
internal class TwitterConfigureOptions : ConfigureDefaultOptions<TwitterOptions>
public class TwitterConfigureOptions : ConfigureDefaultOptions<TwitterOptions>
{
// Bind to "Twitter" section by default
public TwitterConfigureOptions(IConfiguration config) :

View File

@ -3,6 +3,7 @@
using System;
using Microsoft.AspNetCore.Authentication.Twitter;
using Microsoft.AspNetCore.Authentication.Twitter.Internal;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options.Infrastructure;
@ -19,7 +20,7 @@ namespace Microsoft.Extensions.DependencyInjection
public static IServiceCollection AddTwitterAuthentication(this IServiceCollection services, string authenticationScheme, Action<TwitterOptions> configureOptions)
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IInitializeOptions<TwitterOptions>, TwitterInitializer>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureOptions<TwitterOptions>, TwitterPostConfigureOptions>());
services.AddSingleton<ConfigureDefaultOptions<TwitterOptions>, TwitterConfigureOptions>();
return services.AddRemoteScheme<TwitterOptions, TwitterHandler>(authenticationScheme, authenticationScheme, configureOptions);
}

View File

@ -10,21 +10,21 @@ namespace Microsoft.AspNetCore.Authentication.Twitter
/// <summary>
/// Used to setup defaults for all <see cref="TwitterOptions"/>.
/// </summary>
public class TwitterInitializer : IInitializeOptions<TwitterOptions>
public class TwitterPostConfigureOptions : IPostConfigureOptions<TwitterOptions>
{
private readonly IDataProtectionProvider _dp;
public TwitterInitializer(IDataProtectionProvider dataProtection)
public TwitterPostConfigureOptions(IDataProtectionProvider dataProtection)
{
_dp = dataProtection;
}
/// <summary>
/// Invoked to initialize a TOptions instance.
/// Invoked to post configure a TOptions instance.
/// </summary>
/// <param name="name">The name of the options instance being initialized.</param>
/// <param name="options">The options instance to initialize.</param>
public void Initialize(string name, TwitterOptions options)
/// <param name="name">The name of the options instance being configured.</param>
/// <param name="options">The options instance to configure.</param>
public void PostConfigure(string name, TwitterOptions options)
{
options.DataProtectionProvider = options.DataProtectionProvider ?? _dp;

View File

@ -2,18 +2,9 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.Extensions.Options;
namespace Microsoft.AspNetCore.Authentication
{
public class InitializeAuthenticationSchemeOptions<TOptions> : InitializeOptions<TOptions>
where TOptions : AuthenticationSchemeOptions
{
public InitializeAuthenticationSchemeOptions(string name)
: base(name, options => options.ClaimsIssuer = options.ClaimsIssuer ?? name)
{ }
}
/// <summary>
/// Contains the options used by the <see cref="AuthenticationHandler{T}"/>.
/// </summary>

View File

@ -2,9 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
@ -79,12 +77,12 @@ namespace Microsoft.Extensions.DependencyInjection
where TOptions : RemoteAuthenticationOptions, new()
where THandler : RemoteAuthenticationHandler<TOptions>
{
services.TryAddEnumerable(ServiceDescriptor.Singleton<IInitializeOptions<TOptions>, EnsureSignInScheme<TOptions>>());
services.TryAddEnumerable(ServiceDescriptor.Singleton<IPostConfigureOptions<TOptions>, EnsureSignInScheme<TOptions>>());
return services.AddScheme<TOptions, THandler>(authenticationScheme, displayName, configureScheme: null, configureOptions: configureOptions);
}
// Used to ensure that there's always a default data protection provider
private class EnsureSignInScheme<TOptions> : IInitializeOptions<TOptions> where TOptions : RemoteAuthenticationOptions
private class EnsureSignInScheme<TOptions> : IPostConfigureOptions<TOptions> where TOptions : RemoteAuthenticationOptions
{
private readonly AuthenticationOptions _authOptions;
@ -93,7 +91,7 @@ namespace Microsoft.Extensions.DependencyInjection
_authOptions = authOptions.Value;
}
public void Initialize(string name, TOptions options)
public void PostConfigure(string name, TOptions options)
{
options.SignInScheme = options.SignInScheme ?? _authOptions.DefaultSignInScheme;
}