クッキー認証で使用asp.netコア

コンフィギュレーション

Startup.ConfigureServices法では、アイデンティティーを作成して検証ミドルウェアサービスのAddAuthenticationとAddCookie方法があります。

services.AddAuthentication(Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(オプション => 
            { 
                // クッキー設定 
                options.Cookie.HttpOnly = ; 
                options.ExpireTimeSpan = TimeSpan.FromMinutes(20 ); 

                options.LoginPath = " /アカウント/ログイン" ; 
                options.AccessDeniedPath = " /アカウント/アクセス拒否" ; 
                options.SlidingExpiration = ;
            });

 

AuthenticationSchemeは、アプリケーションの認証スキームAddAuthenticationのデフォルト設定に渡されます。そこに複数のインスタンスの認証Cookieであり、あなたは承認のために特定のプログラムを使用したい場合は、AuthenticationSchemeは有用であろう。CookieAuthenticationDefaultsにAuthenticationScheme。AuthenticationSchemeは、プログラムの値「クッキー」を提供します。任意の文字列値は、特徴的なスキームのために提供することができます。
認証スキームを適用クッキー認証方式は、アプリケーションとは異なります。AddCookieの身元認証方式へのクッキーは、CookieAuthenticationDefaults.AuthenticationScheme(「クッキー」)を使用しない場合。
デフォルトでは、認証Cookie IsEssentialプロパティがtrueに設定されています。サイト訪問者は、認証Cookieの使用を可能にする、データ収集に同意しない場合。 


Startup.Configureでは、コールUseAuthenticationとUseAuthorizationはHttpContext.User属性、および実行する権限ミドルウェア要求を設定します。UseAuthenticationとUseAuthorizationメソッドの前に呼び出しUseEndpointsを呼び出します。

app.UseCookiePolicy(); 
app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(エンドポイント
=> {   endpoints.MapControllers();   endpoints.MapRazorPages(); });

 

ログイン

ユーザー情報を保存するためにクッキーを作成するには、ClaimsPrincipalを構築します。ユーザー情報をシリアライズし、クッキーに保存されます。
クレームは、任意の所望のClaimsIdentityを使用して作成し、ユーザーをログに記録するSignInAsyncを呼び出します。

VaRのクレーム= 新しいリスト<項> 
{ 
新しい項(ClaimTypes.Name、user.Email)、
 新たなクレーム(" フルネーム" 、user.FullName)、
 新たな請求項(ClaimTypes.Role、" 管理者" 
}。

VaRの claimsIdentity = 新しいClaimsIdentity(
クレーム、CookieAuthenticationDefaults.AuthenticationScheme)。

VaRの authProperties = 新しいAuthenticationProperties 
{ 
// AllowRefresh = <ブール>、
 // 認証セッションの更新を許可する必要があります。

//ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(10)、
 // 認証チケットの有効期限が切れる時刻です。A 
 // 値セットは、ここでのExpireTimeSpanオプションより優先されます 
 // AddCookieで設定CookieAuthenticationOptionsを。

// IsPersistent =真、
 // するかどうかの認証セッションを越えて永続化される 
 // 複数の要求。クッキー、コントロールで使用する場合
 // (マッチングクッキーの有効期間は、絶対的であるかどうか
 、// または認証チケットの有効期間)セッションをベース。

// IssuedUtc = <のDateTimeOffset>、
 // 認証チケットが発行された時刻。

//RedirectUri = <ストリング>
 // HTTPとして使用する完全なパスまたは絶対URI 
 // リダイレクト応答値。
}。

await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme、
新しいClaimsPrincipal(claimsIdentity)、
authProperties)。

 

SignInAsyncは暗号化されたCookieを作成し、現在の応答に追加します。AuthenticationSchemeが指定されていない場合は、デフォルトのスキーム。
暗号化のためのASP.NETのコアデータ保護システム。アプリケーションまたはWebファームの負荷分散にまたがる複数のコンピュータアプリケーションでホストされているために、データ保護セットは、同一のアプリケーション識別子とキーリングを使用するように設定されています。

 

ログアウト

 

現在のユーザーをログオフし、自分のCookieを削除するには、SignOutAsyncを呼び出してください。

await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme)。

 

CookieAuthenticationDefaults.AuthenticationScheme(または「クッキー」)が解決策(例えば、「ContosoCookie」)として使用されていない場合は、プロバイダが使用するコンフィギュレーションの認証スキームを提供してください。そうでない場合は、デフォルトのプログラム。

 

おすすめ

転載: www.cnblogs.com/oyang168/p/11966118.html
おすすめ