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;
            }
        }
    }
  • 相关阅读:
    VUE处理项目中的ESLint语法报错问题
    通过Focas连接Fanuc的NC Guide
    IdentityServer
    Dapper2.0.78手册翻译
    Framework项目持续集成(jenkins)及集合SonarQube
    基于 GitBook 搭建个人博客
    GitBook 常用插件
    Vue管理系统前端系列六动态路由-权限管理实现
    Vue管理系统前端系列五自定义主题
    Vue管理系统前端系列四组件拆分封装
  • 原文地址:https://www.cnblogs.com/htlp/p/15256936.html
Copyright © 2011-2022 走看看