zoukankan      html  css  js  c++  java
  • 4.0AuthenticationServiceCollectionExtensions&AuthenticationCoreServiceCollectionExtensions

    using System;
    using Microsoft.AspNetCore.Authentication;
    using Microsoft.Extensions.DependencyInjection.Extensions;
    using Microsoft.Extensions.Options;
    
    namespace Microsoft.Extensions.DependencyInjection
    {
        /// <summary>
        /// Extension methods for setting up authentication services in an <see cref="IServiceCollection" />.
        /// </summary>
        public static class AuthenticationServiceCollectionExtensions
        {
            /// <summary>
            /// Registers services required by authentication services.
            /// </summary>
            /// <param name="services">The <see cref="IServiceCollection"/>.</param>
            /// <returns>A <see cref="AuthenticationBuilder"/> that can be used to further configure authentication.</returns>
            public static AuthenticationBuilder AddAuthentication(this IServiceCollection services)
            {
                if (services == null)
                {
                    throw new ArgumentNullException(nameof(services));
                }
    
                services.AddAuthenticationCore();
                services.AddDataProtection();
                services.AddWebEncoders();
                services.TryAddSingleton<ISystemClock, SystemClock>();
                return new AuthenticationBuilder(services);
            }
    
            /// <summary>
            /// Registers services required by authentication services. <paramref name="defaultScheme"/> specifies the name of the
            /// scheme to use by default when a specific scheme isn't requested.
            /// </summary>
            /// <param name="services">The <see cref="IServiceCollection"/>.</param>
            /// <param name="defaultScheme">The default scheme used as a fallback for all other schemes.</param>
            /// <returns>A <see cref="AuthenticationBuilder"/> that can be used to further configure authentication.</returns>
            public static AuthenticationBuilder AddAuthentication(this IServiceCollection services, string defaultScheme)
                => services.AddAuthentication(o => o.DefaultScheme = defaultScheme);
    
            /// <summary>
            /// Registers services required by authentication services and configures <see cref="AuthenticationOptions"/>.
            /// </summary>
            /// <param name="services">The <see cref="IServiceCollection"/>.</param>
            /// <param name="configureOptions">A delegate to configure <see cref="AuthenticationOptions"/>.</param>
            /// <returns>A <see cref="AuthenticationBuilder"/> that can be used to further configure authentication.</returns>
            public static AuthenticationBuilder AddAuthentication(this IServiceCollection services, Action<AuthenticationOptions> configureOptions)
            {
                if (services == null)
                {
                    throw new ArgumentNullException(nameof(services));
                }
    
                if (configureOptions == null)
                {
                    throw new ArgumentNullException(nameof(configureOptions));
                }
    
                var builder = services.AddAuthentication();
                services.Configure(configureOptions);
                return builder;
            }
    
        }
    }
    using System;
    using Microsoft.AspNetCore.Authentication;
    using Microsoft.Extensions.DependencyInjection.Extensions;
    
    namespace Microsoft.Extensions.DependencyInjection
    {
        /// <summary>
        /// Extension methods for setting up authentication services in an <see cref="IServiceCollection" />.
        /// </summary>
        public static class AuthenticationCoreServiceCollectionExtensions
        {
            /// <summary>
            /// Add core authentication services needed for <see cref="IAuthenticationService"/>.
            /// </summary>
            /// <param name="services">The <see cref="IServiceCollection"/>.</param>
            /// <returns>The service collection.</returns>
            public static IServiceCollection AddAuthenticationCore(this IServiceCollection services)
            {
                if (services == null)
                {
                    throw new ArgumentNullException(nameof(services));
                }
    
                services.TryAddScoped<IAuthenticationService, AuthenticationService>();
                services.TryAddSingleton<IClaimsTransformation, NoopClaimsTransformation>(); // Can be replaced with scoped ones that use DbContext
                services.TryAddScoped<IAuthenticationHandlerProvider, AuthenticationHandlerProvider>();
                services.TryAddSingleton<IAuthenticationSchemeProvider, AuthenticationSchemeProvider>();
                return services;
            }
    
            /// <summary>
            /// Add core authentication services needed for <see cref="IAuthenticationService"/>.
            /// </summary>
            /// <param name="services">The <see cref="IServiceCollection"/>.</param>
            /// <param name="configureOptions">Used to configure the <see cref="AuthenticationOptions"/>.</param>
            /// <returns>The service collection.</returns>
            public static IServiceCollection AddAuthenticationCore(this IServiceCollection services, Action<AuthenticationOptions> configureOptions) {
                if (services == null)
                {
                    throw new ArgumentNullException(nameof(services));
                }
    
                if (configureOptions == null)
                {
                    throw new ArgumentNullException(nameof(configureOptions));
                }
    
                services.AddAuthenticationCore();
                services.Configure(configureOptions);
                return services;
            }
        }
    }
  • 相关阅读:
    netty的基本使用
    netty 实现简单的rpc调用
    NIO 的基本使用
    BIO实现 Socket 通信
    springboot使用ElasticSearch
    docker-compose安装rabbitmq集群(主从集群---》镜像集群)
    杂谈:面向微服务的体系结构评审中需要问的三个问题
    使用Spring Boot和RxJava的构建响应式REST API
    JVM体系结构详解
    如何成为更好的程序员?
  • 原文地址:https://www.cnblogs.com/htlp/p/15256936.html
Copyright © 2011-2022 走看看