導入
「ログインした人だけ見られるページ」「管理者だけ押せるボタン」——公開アプリには認証(誰か)と認可(何を許すか)が欠かせません。Blazorには、それを宣言的に扱うAuthorizeViewと[Authorize]が用意されています。
説明
<AuthorizeView>は、ログイン状態によって表示を切り替えます。
<AuthorizeView>
<Authorized>
<p>ようこそ、@context.User.Identity?.Name さん</p>
<button @onclick="Logout">ログアウト</button>
</Authorized>
<NotAuthorized>
<p>ログインしてください。</p>
</NotAuthorized>
</AuthorizeView>
ページ全体を保護するには@attribute [Authorize]、役割(ロール)で絞るなら条件を付けます。
@page "/admin"
@attribute [Authorize(Roles = "Admin")]
<h1>管理者ページ</h1>
<AuthorizeView>+<Authorized>/<NotAuthorized>で、ログイン状態により表示を出し分ける- ページ丸ごと守るなら
@attribute [Authorize]。ロールやポリシーで細かく制御できる - 認証の実体(ログインの仕組み)は
AuthenticationStateProviderが担い、ASP.NET Core Identity や OpenID Connect と組み合わせる - サーバー側でも必ず検証すること。UIの出し分けだけでは「守った」ことにならない
まとめ
- 表示の出し分けは
AuthorizeView、ページ保護は[Authorize] - ロール/ポリシーでアクセスを細かく制御できる
- UIだけでなくサーバー側の検証も必須
次回: 最終回。ビルドして公開し、次の一歩へ。