asp.netコア2.xの簡易認証と承認

基本的な構成、AddCookieのうちプレス

使用してシステムを。
使用してSystem.Collections.Genericを。
使用してSystem.Linqのを。
使用してSystem.Threading.Tasksを。
使用してMicrosoft.AspNetCore.Builderを。
使用してMicrosoft.AspNetCore.Hostingを。
使用してMicrosoft.AspNetCore.Httpを。
使用してMicrosoft.AspNetCore.HttpsPolicyを。
使用してMicrosoft.AspNetCore.Mvcを。
使用してMicrosoft.Extensions.Configurationを。
使用してMicrosoft.Extensions.DependencyInjectionを。

名前空間auth.mvc {
     パブリック クラススタートアップ{
         公共スタートアップ(IConfiguration構成){
            の設定 =設定。
        } 

        公共 IConfiguration設定{ 取得します} 

        // このメソッドはランタイムによって呼び出されます。コンテナにサービスを追加するには、このメソッドを使用します。
        公共 のボイドConfigureServices(IServiceCollectionサービス){
             // services.Configure <CookiePolicyOptions>(オプション=> {
             //     // このラムダは非本質的なクッキーのためのユーザーの同意が与えられた要求のために必要とされているかどうかを決定します。
             //     options.CheckConsentNeeded =コンテキスト=>真;
             //    options.MinimumSameSitePolicy = SameSiteMode.None。
            // })。

            services.AddAuthentication(X => { 
                x.DefaultScheme = " アルバー" ; 
                x.DefaultChallengeScheme = " アルバー" ; 
                x.DefaultAuthenticateScheme = " アルバー" ; 
                x.DefaultForbidScheme = " アルバー" ; 
                x.DefaultSignInScheme = " アルバー" 
                x.DefaultSignOutScheme = " アルバー"
            })
                .AddCookie(" アルバー" 
                    設定 => {
                         // config.LoginPath = "/ホーム/ loginview"; 
                        config.AccessDeniedPath = " /ホーム/ loginview " ; 
                    } 
                ); 
            services.AddMvc()SetCompatibilityVersion(CompatibilityVersion.Version_2_2)。
        } 

        // このメソッドはランタイムによって呼び出されます。HTTPリクエストパイプラインを設定するには、このメソッドを使用します。
        公共 のボイド{(IApplicationBuilderアプリ、IHostingEnvironmentのENV)を設定し
             た場合(env.IsDevelopment()){ 
                app.UseDeveloperExceptionPage()。
            } { 
                app.UseExceptionHandler(" /ホーム/エラー" );
                // デフォルトHSTS値は30日です。あなたが見る、生産シナリオのためにこれを変更することがありhttps://aka.ms/aspnetcore-hstsを。
                app.UseHsts(); 
            } 

            app.UseHttpsRedirection()。
            app.UseStaticFiles(); 
            app.UseCookiePolicy();
            app.UseAuthentication(); 
            app.UseMvc(ルート => {
                routes.MapRoute(
                    名称:" デフォルト" 
                    テンプレート:" {コントローラ=ホーム} / {アクション=ランキング} / {?ID} " )。
            }); 
        } 
    } 
}

ログインして、傍受の保護

使用してシステムを。
使用してSystem.Collections.Genericを。
使用したSystem.Diagnosticsを。
使用してSystem.Linqのを。
使用してSystem.Threading.Tasksを。
使用してMicrosoft.AspNetCore.Mvcを。
使用してauth.mvc.Modelsを。
使用してSystem.Security.Claimsを。
使用してMicrosoft.AspNetCore.Authenticationを。
使用してMicrosoft.AspNetCore.Authorizationを。

名前空間auth.mvc.Controllers {
     パブリック クラスにHomeController:コントローラ{
         公共IActionResult指数(){
             返すビューを(); 
        } 
        パブリックIActionResultようこそ(文字列のuserName){
             場合ストリング.IsNullOrWhiteSpace(ユーザ名)){ 
                ViewBag.userName = この .TempData [ " towelcome " ]。
                この.TempData.Clear(); 
            } { 
                ViewBag.userName = userNameに。
            } 
            を返す)(ビュー。
        } 
        [承認(AuthenticationSchemes = " アルバー" )]
         公衆IActionResultプライバシー(){
             戻ります(ビュー)。
        } 

        【のResponseCache(時間 = 0、場所= ResponseCacheLocation.None、NOSTORE = )]
         パブリックIActionResultエラー(){
             戻りビュー(新しい ErrorViewModel {RequestId = Activity.Current .ID ???HttpContext.TraceIdentifier})。
        } 
        公共IActionResult LoginView(){
             戻り(ビュー)。
        } 
        パブリック 非同期タスクログイン(LoginModel P){
             場合(p.account!= " tom.write" && p.pwd =!" 111 223 " ){
                 のawait Task.FromException(新しい新しい例外(" アカウントPWDか間違っている" )); 
            } 
            VARの CI = 新新 ClaimsIdentity(" アルバー" ); // ここではピットの前に、内部の文字列を書いていない、あなたはまだ保護されたリソース、ここではその理由アクセスすることはできません 
            ci.AddClaim(新新、クレーム(ClaimTypes.Name、p.account))
             のvar CP = 新新ClaimsPrincipal(); 
            cp.AddIdentity(CIを); 
            ザが待つ この.HttpContext.SignInAsync(CP)を、
            //   (string.IsNullOrEmpty(HttpContext.Request.Form [ "にreturnurl"]))HttpContext.Response.Redirect($ "/ホーム/ウェルカムのuserName = {} p.account?")であれば、
            もし文字列 .IsNullOrEmpty(HttpContext.Request.Form [ " にreturnurl " ])){ 

                // RedirectToAction(、$ "ようこそ"の新しい{usernameは= p.account}); 
                HttpContext.Response.Redirect(" ようこそ" );
                この .TempData [ " towelcome " ] = p.account。
            }  HttpContext.Response.Redirect(HttpContext.Request.Form [ "]); 
        } 
    } 
}

だから私は確かに資格証明書の認証と承認の検証によって発行されたCookieの値HttpContext.SignInAsync内部の拡張メソッド書かれたヘッダによる要求があることがわかっもたらしたクッキーを表示するための最も簡単な検証要求を完了しました。

おすすめ

転載: www.cnblogs.com/ProjectDD/p/10995650.html