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;
            }
        }
    }
  • 相关阅读:
    【ML】【HMM】【转】隐马尔可夫模型(HMM)简介
    【ML】对线性回归,logistic回归和广义线性回归的认识
    【CT】【转】 P,NP,NPcomplete,NPhard
    【python】python path,macports,easyinstall,numpy,scipy,ipython,matplotlib,集成工具
    【ML】【转】关于主成分分析的五个问题
    【mat】matlab矩阵运算及函数
    【CT】【转】第一个 NPcomplete 问题
    【ML】VC dimension
    【CT】递归语言的性质
    【CT】Universal Turing Machine
  • 原文地址:https://www.cnblogs.com/htlp/p/15256936.html
Copyright © 2011-2022 走看看