.NET 8 で認証が必要な Web ページを作ってみた

例えば、社内 Web アプリなら SSO 済みのセッション情報や環境変数などからログインしているユーザーを特定して、サイトを作り込んだりしています。今回は、.NET 8 でログインフォーム付きの Web アプリを作成して、認証が必要な Web ページの動きを試してみました。

.NET 8 でログインフォーム付きの Web アプリを作成

$ dotnet --version
8.0.100

$ dotnet new webapp --auth Individual -o WebApp1

$ cd WebApp1

$ dotnet run

Privacy ページの状態を確認

ログインしていない状態でも、Privacy ページの内容が確認できます。

Privacy ページのソースコードを表示

Ctrl+Cdotnet run を一旦止めて、VSCode でソースコードを開きます。

$ code Pages/Privacy.cshtml.cs

変更前のソースコードです。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace WebApp1.Pages;

public class PrivacyModel : PageModel
{
    private readonly ILogger<PrivacyModel> _logger;

    public PrivacyModel(ILogger<PrivacyModel> logger)
    {
        _logger = logger;
    }

    public void OnGet()
    {
    }
}

Privacy ページを認証が必要なページに変更

using Microsoft.AspNetCore.Authorization;[Authorize] を追加します。

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Authorization;

namespace WebApp1.Pages;

[Authorize]
public class PrivacyModel : PageModel
{
    private readonly ILogger<PrivacyModel> _logger;

    public PrivacyModel(ILogger<PrivacyModel> logger)
    {
        _logger = logger;
    }

    public void OnGet()
    {
    }
}

もう一度 Privacy ページにアクセスして状態を確認

dotnet run で起動後、Privacy を表示した状態は、ログインページに自動でリダイレクトされています。

別途 Register で登録しておいたユーザー情報でログインすると Privacy ページの内容が表示できます。

参考

https://learn.microsoft.com/ja-jp/aspnet/core/security/authentication/identity?view=aspnetcore-8.0&tabs=netcore-cli

タグ: