ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。
Cookieの有効期限について
Cookieには通常はタイムアウト(有効期限)を設定します。
基本的に有効期限を設定していない場合は、ブラウザを閉じてしまった時点でCookieが消えてしまいますので、有効期限を設定する必要があります。
Cookieの有効期限設定の実装方法
Cookieの有効期限設定は、Program.csの中のCookie認証設定のオプションとして付与する形で実装を行います。
ちなみに、Cookie認証の実装方法はこちらの記事で解説しています。
var builder = WebApplication.CreateBuilder(args);
// Cookie による認証スキームを追加する
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.SlidingExpiration = true;
options.Events.OnRedirectToLogin = cxt =>
{
cxt.Response.StatusCode = StatusCodes.Status401Unauthorized;
return Task.CompletedTask;
};
options.ExpireTimeSpan = TimeSpan.FromMinutes(480);
});
options.ExpireTimeSpan = TimeSpan.FromMinutes(480);
の記述でCookieの有効期限を設定していて、FromMinutesの引数に期限となる数値を渡しています。
例の場合だと480分なので、有効期限は8時間となります。
また、options.SlidingExpiration = true;
という記述に関してですが、slidingExpiration が true になっている場合、
FromMinutesで指定した期限の半分を過ぎたCookieを持った状態でアクセスされた時に、有効期限を更新したCookieをアクセス元に渡すことができます。
例の場合だと、有効期限である8時間の半分=4時間を過ぎてしまったCookieの時は、有効期限は8時間に更新されます。
ASP.NET おすすめ入門講座
3つのWebアプリケーションの開発を通して、ASP.NETについて基礎から学べるおすすめの入門講座がこちら☟
【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!