sakutomo.com Open in urlscan Pro
157.112.187.154  Public Scan

URL: https://sakutomo.com/asp-net-webapi-login-cookie-auth/
Submission: On November 22 via api from US — Scanned from JP

Form analysis 2 forms found in the DOM

POST https://sakutomo.com/wp-comments-post.php

<form action="https://sakutomo.com/wp-comments-post.php" method="post" id="commentform" class="comment-form">
  <p class="comment-notes"><span id="email-notes">メールアドレスが公開されることはありません。</span> <span class="required-field-message"><span class="required">※</span> が付いている欄は必須項目です</span></p>
  <p class="comment-form-comment"><label for="comment">コメント <span class="required">※</span></label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required"></textarea></p>
  <p class="comment-form-author"><label for="author">名前 <span class="required">※</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" autocomplete="name" required="required"></p>
  <p class="comment-form-email"><label for="email">メール <span class="required">※</span></label> <input id="email" name="email" type="text" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email" required="required"></p>
  <p class="comment-form-url"><label for="url">サイト</label> <input id="url" name="url" type="text" value="" size="30" maxlength="200" autocomplete="url"></p>
  <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes"> <label for="wp-comment-cookies-consent">次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。</label></p>
  <p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAAYAQAAAABxGIYdAAAAAnRSTlMAAHaTzTgAAAAMSURBVAjXY2AYWQAAAPAAAde3lqIAAAAASUVORK5CYII=" alt="CAPTCHA" data-src="https://sakutomo.com/wp-content/siteguard/536384651.png" decoding="async"
      class="lazyload"><noscript><img src="https://sakutomo.com/wp-content/siteguard/536384651.png" alt="CAPTCHA" data-eio="l"></noscript></p>
  <p><label for="siteguard_captcha">上に表示された文字を入力してください。</label><br><input type="text" name="siteguard_captcha" id="siteguard_captcha" class="input" value="" size="10" aria-required="true"><input type="hidden" name="siteguard_captcha_prefix"
      id="siteguard_captcha_prefix" value="536384651"></p>
  <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="送信"> <input type="hidden" name="comment_post_ID" value="777" id="comment_post_ID">
    <input type="hidden" name="comment_parent" id="comment_parent" value="0">
  </p>
  <p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="a16c0eca0a"></p>
  <p style="display: none !important;"><label>Δ<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="1700620869954">
    <script>
      document.getElementById("ak_js_1").setAttribute("value", (new Date()).getTime());
    </script>
  </p>
</form>

GET https://sakutomo.com/

<form method="get" id="searchform" action="https://sakutomo.com/">
  <label class="hidden" for="s">
  </label>
  <input type="text" placeholder="" value="" name="s" id="s">
  <input type="submit" value="" class="st-fa" id="searchsubmit">
</form>

Text Content

 * トップページ
 * このブログについて
 * お問い合わせフォーム
 * プライバシーポリシー



TOMO LOG


 * トップページ
 * このブログについて
 * お問い合わせフォーム
 * プライバシーポリシー



 1. HOME >
 2. プログラミング >
 3. C# >
 4. ASP.NET >

ASP.NET ASP.NET Core C# WEB API プログラミング


【 ASP.NET WEBAPI 】COOKIE を使用したログイン認証機能の実装方法

2023年8月2日


ASP.NET Core(.NET 6)でCookieを使用したログイン認証機能の実装方法を解説します。

今回はSPAのプロジェクトと仮定してWebAPI 側にログイン認証の機能を実装して解説したいと思います。


目次[開く]

 * Program.cs の設定
 * ログイン認証の実装
 * ASP.NET おすすめ入門講座




PROGRAM.CS の設定

以前までのバージョンでは、Program.cs以外に「Startup.cs」というファイルもあり、
そちらにCookie認証の定義を記述しているようでしたが、

ASP.NET Coreの.NET
6バージョンでは、Program.csファイルとStartup.csファイルは統合されてProgram.csのみになりました。
そのため、Cookie認証の定義は、Program.csに記述する必要があります。


以下がProgram.cs (一部抜粋) の実装内容となります。

// Cookie による認証スキームを追加する
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

// Cookie認証実装に必要
app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Run();

AddAuthentication メソッド、AddCookie
メソッドを実装することでアプリケーションに対してCookie認証が必要となるように設定することが可能です。
AddAuthentication メソッドの引数では、
CookieAuthenticationDefaults.AuthenticationScheme を設定してください。

また、アプリケーションに認証機能を追加するために
app.UseAuthentication();
を app.UseAuthorization(); の前に記述しておいてください。


ログイン認証の実装

ログイン認証用のコントローラーがあると仮定して、そのコントローラー内でログイン認証がOKだった場合に
生成した認証Cookieをレスポンスに設定します。


namespace WebAPI.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class LoginController : ControllerBase
    {
        // ログイン
        [HttpPost]
        [AllowAnonymous]
        public async Task<IActionResult> Login([FromQuery] string loginName, [FromQuery] string password)
        {
            //ログイン認証判定
       if (// ログイン認証 == true)
            {
              // サインインに必要なプリンシパルを作る
              var claims = new[] { new Claim(ClaimTypes.Name, loginName) };
              var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
              var principal = new ClaimsPrincipal(identity);

              // 認証クッキーをレスポンスに追加
              await HttpContext.SignInAsync(principal);

              return Ok();
            }
            return BadRequest("ログイン認証 == false");
        }
    }
}


ASP.NET おすすめ入門講座



3つのWebアプリケーションの開発を通して、ASP.NETについて基礎から学べるおすすめの入門講座がこちら☟

【入門者向け】ASP.NET MVCでWebアプリ開発のノウハウを学ぼう!




   
 * Twitter
   
 * Share
   
 * Pocket
   
 * Hatena
   
 * LINE
   
 * URLコピー

おすすめ記事はコチラ

1

【 スマレジ テックファーム 】スマレジのテックファーム事業を紹介!

スマレジ テックファーム で Webエンジニアとして勤めている tomoです。 今回は株式会社スマレジや私が所属している 「 スマレジ テックファーム
」についてPRしていきたいと思います。 スマレジ ...



2

【 ASP.NET WEBAPI 】BODYパラメータのJSONを受け取る方法 FROMBODY

FromBody 属性を使用して、 ASP.NET Core(.NET 6)のWebAPIでBodyパラメータのJSONを受け取る方法を解説します。
FromBody 属性 POSTやGETで呼び出さ ...

3

【 ASP.NET CORE 】COOKIE認証 有効期限 (タイムアウト) の設定方法

ASP.NET Core(.NET 6)でCookie認証のタイムアウトを設定する方法を解説します。 Cookieの有効期限について
Cookieには通常はタイムアウト(有効期限)を設定します。 基本 ...

4

【 ASP.NET WEBAPI 】クロスオリジンリクエスト( CORS )の設定方法

ASP.NET Core(.NET 6)でクロスオリジンリクエスト ( CORS )を設定する方法を解説します。 簡単に クロスオリジンリクエスト ( CORS
)とは何かについても少し解説したいと思 ...

-ASP.NET, ASP.NET Core, C#, WEB API, プログラミング
-エンジニア, スマレジ, プログラミング

author

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


COMMENT コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト

次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。



上に表示された文字を入力してください。






Δ

関連記事

ASP.NET Razor Pages プログラミング

ASP.NET CORE RAZOR PAGES WEBアプリの公式チュートリアルをやってみた①(プロジェクト作成~アプリの実行まで)

今回はタイトルにある通り、MSDN公式の「ASP.NET Core Razor Pages Webアプリ」のチュートリアルを進めて学んでいこうと思います!
初めてプログラミングをする方でもわかりやすい ...



ASP.NET JavaScript jQuery プログラミング

【 JQUERY 】HASCLASS メソッドの使用方法 / 条件分岐の方法

今回はjQueryのhasClassメソッドとは何か、そしてその使用方法について解説していきたいと思います。
また、ASP.NET環境下での便利な使用方法も解説したいと思います。 例えば、お気に入り機 ...

ASP.NET Web Forms 独習ASP.NET Web Forms

独習 ASP.NET WEBフォームを読んで学んだことをまとめてみました。PART.5

前回に引き続き、「独習 ASP.NET Webフォーム(第6版)」を 読んで学んだことを少しずつ記事にまとめていきたいと思います。
読んで学んでインプットするだけではなく、 ブログ記事にまとめてアウト ...

Node.js プログラミング

【 SEQUELIZE 】QUERY メソッドの各オプションの使い方 | NODE.JS

sequelizeの
queryメソッドは、実行するSQLクエリにさまざまなオプションを提供することができます。以下に、いくつかの重要なオプションとそれらの役割、使い方について説明します。
Seque ...

ASP.NET Web Forms 独習ASP.NET Web Forms

独習 ASP.NET WEBフォームを読んで学んだことをまとめてみました。PART.6

前回に引き続き、「独習 ASP.NET Webフォーム(第6版)」を 読んで学んだことを少しずつ記事にまとめていきたいと思います。
読んで学んでインプットするだけではなく、 ブログ記事にまとめてアウト ...

【 ASP.NET WebAPI 】URLパラメータの受け取り方法 FromQuery

【 ASP.NET WebAPI 】クロスオリジンリクエスト( CORS )の設定方法

tomo



 * 

問合せはコチラ

ブログ プログラミング

ブログ開設しました!

2023/1/21

Node.js プログラミング

【 SEQUELIZE 】QUERY メソッドの各オプションの使い方 | NODE.JS

2023/10/21

Node.js プログラミング

【 NODE.JS 】SEQUELIZEで直接SQL文を実行する方法 | QUERY メソッド

2023/10/21

プログラミング

【JAVASCRIPT】JSONオブジェクトから要素を削除する方法

2023/9/30

プログラミング

【JAVASCRIPT】文字列の前方一致を判別する方法:STARTSWITH()メソッドの使い方

2023/9/30

Node.js プログラミング

【 NODE.JS 】時間計測を行うNODE.JSのPROCESS.HRTIME()メソッドの使い方

2023/8/26

Search











 * トップページ
 * このブログについて
 * お問い合わせフォーム
 * プライバシーポリシー


TOMO LOG



© 2023 TOMO LOG









S