| File: IdentityServiceCollectionExtensions.cs | Web Access |
| Project: src\aspnetcore\src\Identity\Extensions.Core\src\Microsoft.Extensions.Identity.Core.csproj (Microsoft.Extensions.Identity.Core) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Microsoft.Extensions.DependencyInjection; /// <summary> /// Contains extension methods to <see cref="IServiceCollection"/> for configuring identity services. /// </summary> public static class IdentityServiceCollectionExtensions { /// <summary> /// Adds and configures the identity system for the specified User type. Role services are not added /// by default but can be added with <see cref="IdentityBuilder.AddRoles{TRole}"/>. /// </summary> /// <typeparam name="TUser">The type representing a User in the system.</typeparam> /// <param name="services">The services available in the application.</param> /// <returns>An <see cref="IdentityBuilder"/> for creating and configuring the identity system.</returns> public static IdentityBuilder AddIdentityCore<TUser>(this IServiceCollection services) where TUser : class => services.AddIdentityCore<TUser>(o => { }); /// <summary> /// Adds and configures the identity system for the specified User type. Role services are not added by default /// but can be added with <see cref="IdentityBuilder.AddRoles{TRole}"/>. /// </summary> /// <typeparam name="TUser">The type representing a User in the system.</typeparam> /// <param name="services">The services available in the application.</param> /// <param name="setupAction">An action to configure the <see cref="IdentityOptions"/>.</param> /// <returns>An <see cref="IdentityBuilder"/> for creating and configuring the identity system.</returns> public static IdentityBuilder AddIdentityCore<TUser>(this IServiceCollection services, Action<IdentityOptions> setupAction) where TUser : class { // Services identity depends on services.AddOptions().AddLogging(); services.AddMetrics(); // Services used by identity services.TryAddScoped<IUserValidator<TUser>, UserValidator<TUser>>(); services.TryAddScoped<IPasswordValidator<TUser>, PasswordValidator<TUser>>(); services.TryAddScoped<IPasswordHasher<TUser>, PasswordHasher<TUser>>(); services.TryAddScoped<ILookupNormalizer, UpperInvariantLookupNormalizer>(); services.TryAddScoped<IUserConfirmation<TUser>, DefaultUserConfirmation<TUser>>(); // No interface for the error describer so we can add errors without rev'ing the interface services.TryAddScoped<IdentityErrorDescriber>(); services.TryAddScoped<IUserClaimsPrincipalFactory<TUser>, UserClaimsPrincipalFactory<TUser>>(); services.TryAddScoped<UserManager<TUser>>(); if (setupAction != null) { services.Configure(setupAction); } return new IdentityBuilder(typeof(TUser), services); } }