99. ASP.NET Core Web のユーザーにロールを加える
はじめに
前回はログインユーザーのみに閲覧を許す機能の実装を試してみました。
今回は、
認可によって保護されたユーザー データを使って ASP.NET Core アプリを作成する | Microsoft Learn
をベースに試していきます。
何回か書いていますが、この定期購読マガジン、ネットや書籍の情報だけで、そのまま正常動作した場合は、全て、無料の記事にしています。
(だって、それじゃぁ有料の価値が無いからね)
今回もそれかな…とおもいつつ、いやぁ…全然そんなことは無かったので、途中から有料になるのであしからず。
徒然なるままに、試しながら書き連ねていった結果、.NET Core 2.x 系の ASP.NET Core を最新の .NET に移行するいい感じの手引書になったので、この回のみ有料購入できるようにしておきました。
ロール付き Web ページの概要
元にした Microsoft Learn の記事によれば、ユーザーロールは、
登録済みユーザー
承認された全てのデータを閲覧可能
自分のデータの編集・削除が可能
マネージャー
連絡先データを承認・拒否が可能
承認された連絡先だけ表示可能
管理者
全てのデータの承認・拒否が可能
全てのデータを閲覧可能
に対応するとのこと
前提知識
この記事を理解するための前提知識は、以下の通り。
これらのトピックは既に、この定期購読マガジンで扱っているので、再度見直しながら読み進めてみてください。
実装方法
この記事は、前から見ていた記事とは若干趣が異なります。
これまでは、プロジェクトを一から作っていく方法の説明でしたが、今回は、ステップごとのサンプルコードが Github から公開されていて、それを元に解説する、というスタイルになっています。
これがサンプルなのですが、中を確認してみると、な、なんと、.NET Core 2.0 ベースじゃないか!
古い…
余談
参考までに説明しておくと、.NET Core は、2016年にリリースされました。.NET Framework がスケーラブル対応の過程の一つのバージョンです。昔の .NET Framework は、対応アプリケーションを動かすために必要なライブラリ(アセンブリ)が巨大でしたが、.NET Core は、基本ライブラリが見直されてコンパクトになり、必要なライブラリは都度都度組み込むというスタイルになりました。IoT ソリューションもそうですが、アクセス数やデータ量が増えて、処理量が巨大なエンタープライズ系 IT ソリューションの場合は、Docker に代表されるコンテナー技術を使って、必要なだけマイクロサービスとして動かせるという、スケーラビリティが必須です。アプリケーションを動かすために必要なライブラリが小さければ、それだけコンテナーの初期化から実際にアプリケーションを動かすまでの時間が短くなり、より効率的なロードバランスが可能になります。要するに、必要な処理量を最適なコンピューティングリソースで賄えるので、コストメリットがあるということ。ちなみに、昔の Java Runtime はスケーラブルでは無かったのですが、今はどうなんだろう?
.NET Core は 3.1 までリリースされましたが、その後は、2020年に.NET Framework 5.0 が出た時点で統合されました。今は、.NET 8.0 です。
更に付け足しておくと、初代の .NET Framework がリリースされたのは 2002年。私がマイクロソフトに、World Wide Embedded Developer Evangelist としてジョインしたのが、2006年。コンポーネント指向が実用レベルになっていく過度期で、前前職で組込み機器向けのコンポーネント機構をやっていたので、へー、既にマイクロソフトはこんなソフトウェアリリースしてんのね、すげー…なんて感じてました。
当時は、まだまだ、.NET Framework は普及啓発が必要な時期で、それを担当していた同僚のエバンジェリストも何人かいました。みんなすげー人達だった。
サンプルが古いので
サンプルが古いので、最新の .NET でやったらどうなるかを解説しながら進めていくことにします。多分、.NET Core で過去開発した資産の移行したい人にも、そして、Visual Studio のプロジェクト管理の話もバリバリ出てくるので、そういうのに興味のある人にも参考になること間違いなし。
ロール付き Web ページを作っていく
では早速やっていくことにします。
スタートアップサンプルの最新化
サンプルとして公開されているスタートアップアプリは、
こんな構成になっています。Visual Studio のプロジェクトファイルの ContactManager.csproj の内容を確認します。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<UserSecretsId>aspnet-ContactManager-7A098A32-4BE0-4A2D-89E1-F082633B4EC9</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" PrivateAssets="All" />
</ItemGroup>
</Project>
この中で、<TargetFramework>netcoreapp2.2</TargetFramework> という部分が、このプロジェクトは、.NET Core 2.2 を使っていることが分ります。
ここから先は
¥ 1,000
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?