ASP.NET Core MVC - クッキーを使う

ASP.NET Core MVCのクッキーの勉強メモです。

クッキーを設定する

レスポンスにクッキーを設定するには、IResponseCookies.Appendメソッドを使います。

// クッキーを設定する
HttpContext.Response.Cookies.Append("test", "Hoge");

// レスポンスに追加されるSet-Cookieヘッダ
//Set-Cookie: test=Hoge; path=/

ASP.NETのときは、1つのクッキーに複数のキーバリューを簡単に設定できましたが、Coreでは自分で実装する必要がありそうです。そういった使い方をあまりしなくなったのかな。

クッキーを取得する

リクエストからクッキーを取得するには、IRequestCookieCollectionインターフェイスを使います。

// 次のようなCookieヘッダが送られてくるとして
//Cookie: test=Hoge

// クッキーを取得
var value = HttpContext.Request.Cookies["test"];
Console.WriteLine(value);
// Hoge

// TryGetValueメソッドを使ってクッキーを取得するのもあり
if (HttpContext.Request.Cookies.TryGetValue("test", out var value)) {
    Console.WriteLine(value);
    // Hoge
}

インデクサで取得する場合、クッキーがないと戻り値はnullになります。

クッキーを削除する

クッキーを削除(=HTTPレスポンスに期限切れの空のクッキーを設定)するには、IResponseCookies.Deleteメソッドを使います。

// クッキーを削除する
HttpContext.Response.Cookies.Delete("test");

// レスポンスのSet-Cookieヘッダ
//Set-Cookie: test=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; samesite=lax

とりあえず基本はこんな感じですかね。