スタートアップのblazorboilerplateクラスのソースコード解析

スタートアップblazorboilerplateクラスのソースコード解析:  https://github.com/enkodellc/blazorboilerplate/blob/master/src/BlazorBoilerplate.Server/Startup.cs

-------------------------------------------------- 

1、  サービスを提供しています。AddIdentity<ApplicationUser、IdentityRole <GUID >>()

                .AddRoles <IdentityRole <GUID >>()

                .AddEntityFrameworkStores <ApplicationDbContext>()

                .AddDefaultTokenProviders()。 

            サービスを提供しています。AddScoped <IUserClaimsPrincipalFactory <ApplicationUser>、AdditionalUserClaimsPrincipalFactory>(); 

         

           //追加IdentityServer

            VAR identityServerBuilderは、サービスを=。AddIdentityServer(オプション=>

            {

                options.IssuerUri = authAuthority。

                options.Events.RaiseErrorEvents =はtrue。

                options.Events.RaiseInformationEvents =はtrue。

                options.Events.RaiseFailureEvents =はtrue。

                options.Events.RaiseSuccessEvents =はtrue。

            })

              。AddConfigurationStore(オプション=>

              {

                  options.ConfigureDbContext = DbContextOptionsBuilder。

              })

              。AddOperationalStore(オプション=>

              {

                  options.ConfigureDbContext = DbContextOptionsBuilder。

 

                  //これは、自動トークンクリーンアップを可能にします。これはオプションです。

                  options.EnableTokenCleanup =はtrue。

                  options.TokenCleanupInterval = 3600; //秒で1時間

              })

              。AddAspNetIdentity <ApplicationUser>();

 

2、===========================================

     VAR authBuilder =サービス。AddAuthentication(オプション=>

            {

                options.DefaultScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme。

            })

            。AddIdentityServerAuthentication(オプション=>

            {

                options.Authority = authAuthority。

                options.SupportedTokens = SupportedTokens.Jwt。

                options.RequireHttpsMetadata = _environment.IsProduction()?真/偽;

                options.ApiName = IdentityServerConfig.ApiName。

            });

            #########################################

             サービスを提供しています。設定<IdentityOptions> オプション=>

            {

                //パスワードの設定

                options.Password.RequireDigit = falseは、

                options.Password.RequiredLength = 6。

                options.Password.RequireNonAlphanumeric = falseは、

                options.Password.RequireUppercase = falseは、

                options.Password.RequireLowercase = falseは、

                //options.Password.RequiredUniqueChars = 6。

 

                //ロックアウトの設定

                options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30)。

                options.Lockout.MaxFailedAccessAttempts = 10。

                options.Lockout.AllowedForNewUsers =はtrue。

 

                //確認メールユーザーの設定が必要

                もし(Convert.ToBoolean(構成[ "BlazorBoilerplate:RequireConfirmedEmail"] ?? "偽"))

                {

                    options.User.RequireUniqueEmail = falseは、

                    options.SignIn.RequireConfirmedEmail =はtrue。

                }

            });

3、================================================ =========

            //ポリシーの追加/クレーム/認証 - https://stormpath.com/blog/tutorial-policy-based-authorization-asp-net-core

            services.AddAuthorization(オプション=>

            {

                options.AddPolicy(Policies.IsAdmin、Policies.IsAdminPolicy())。

                options.AddPolicy(Policies.IsUser、Policies.IsUserPolicy())。

                options.AddPolicy(Policies.IsReadOnly、Policies.IsReadOnlyPolicy())。

                options.AddPolicy(Policies.IsMyDomain、Policies.IsMyDomainPolicy())。//のみサーバー側の操作上の有効な

            });

            services.AddTransient <IAuthorizationHandler、DomainRequirementHandler>();

 

4、************************************************ ************************************

            services.Configure <CookiePolicyOptions>(オプ​​ション=>

            {

                options.MinimumSameSitePolicy = SiのTEのMo de.Noneにおいて、

            });

            services.ConfigureExternalCookie(オプション=>

            {

                // MacOSのログイン修正

                SiのTEのMo de.Noneで.Saクイナモドキ科=のPodcastRSSMail O O O ns.Coマイル。

            });

 

            services.ConfigureApplicationCookie(オプション=>

            {

                // MacOSのログイン修正

                SiのTEのMo de.Noneで.Saクイナモドキ科=のPodcastRSSMail O O O ns.Coマイル。

                options.Cookie.HttpOnly = falseは、

 

                ASP.NETコアでのAPIのURLに//抑制リダイレクト - > https://stackoverflow.com/a/56384729/54159

                options.Events =新しいCookieAuthenticationEvents()

                {

                    OnRedirectToAccessDenied =コンテキスト=>

                    {

                        もし(context.Request.Path.StartsWithSegments( "/ API"))

                        {

                            context.Response.StatusCode =(INT)(HttpStatusCode.Unauthorized)。

                        }

 

                        Task.CompletedTaskを返します。

                    }、

                    OnRedirectToLogin =コンテキスト=>

                    {

                        context.Response.StatusCode = 401。

                        Task.CompletedTaskを返します。

                    }

                }。

            });

 

 

 

 

 

サービス設定 < IdentityOptions >(オプション =>
  {
  //パスワードの設定
  オプションパスワードRequireDigit = ;
  オプションパスワードRequiredLength = 6
  オプションパスワードRequireNonAlphanumeric = ;
  オプションパスワードRequireUppercase = ;
  オプションパスワードRequireLowercase = ;
  // options.Password.RequiredUniqueChars = 6;
   
  //ロックアウトの設定
  オプションロックアウトDefaultLockoutTimeSpan = のTimeSpanFromMinutes30)。
  オプションロックアウトMaxFailedAccessAttempts = 10
  オプションロックアウトAllowedForNewUsers = ;
   
  //確認メールユーザーの設定が必要
  もし変換ToBoolean設定の [ " BlazorBoilerplate:RequireConfirmedEmail " ] ?? ""))
  {
  オプションユーザーRequireUniqueEmail = ;
  オプションサインインRequireConfirmedEmailは = ;
  }
  });

おすすめ

転載: www.cnblogs.com/hopesun/p/12425278.html