【やって学ぶASP.NET Core MVC 】実際にWEB上で使える「見積書・請求書作成システム」を作る!の第3回目です。
前回は、マスターテーブルをデータベース上に作成して、「新規スキャフォールディングアイテム」をつかってWEB上でデータの追加・削除・編集などができるようにして動作確認までできました。
https://pctips.jp/server/aspnet-core-mvc-2/
今回は、寄り道をしてログイン認証機能について調べてみたいと思います。
作成しているシステムの流れ的には、最初にログイン画面がでてから作業開始できるような仕組みなので入口の様なものですね。
マスターテーブルを1つ増加
見積書・請求書を作成するときに、自分の会社情報も表示しないといけないのですが、テーブルを準備するのをわすれていました。
新たに、構成図を書き直して、会社マスター(Company_Master)というのを追加しました。
第2回目のやり方で、WEB上で作業できるところまでやりました。
既にログイン機能は実装されている!?
「Invalid login attempt.」エラー
デバッグの開始をするとEdgeが起動しますが、
ココがポイント
最初のWelcom画面に既に、「Login」が存在します
試しに、ログイン情報を登録してみました。
登録が完了したようなので、ログインしてみることにしました。
他の画面に移動することなく、ログイン画面に「Invalid login attempt.」と赤文字で表示されます。
つまり、ログインできないってことです。
一応、データベースの方から、dbo.AspNetUsersというテーブルを見るとログイン情報は登録されていました。
最初からログイン機能を作成する方法もあるようですが、既存の物が使えるから使いたいですよね。
結局デフォルトでログイン可能
サイトや本などでエラーを探し回っていたら迷子になってしまっていたようです。
権限のテーブル(dbo.AspNetRoles)に権限情報を登録して、ユーザーとの紐付テーブル(dbo.AspNetUserRoles)に、ユーザーテーブル(dbo.AspNetUser)のID情報を入力したりしました。
※IDが自動で振られると思っていましたが振られないので適当に手動て入力
注意ポイント
ログイン画面やユーザーの登録画面が自動で生成されているのに、なんで権限画面が無いのだろうとデータベースを直接いじっている時に思いましたが、エラーから抜け出したくて頑張ってしまいました。
結局、データベースから、ユーザーテーブル(dbo.AspNetUser)のログイン情報を削除して、再登録した後の、もうひと手間があったようです。
そして、何事もなかったように、ログインできました。
第3回目のまとめ
今回の
ココがポイント
認証機能は、ASP.NETのIdentityという機能らしい
新しいプロジェクト作成時に、認証の部分を「個別のユーザーアカウント」に変更すると自動で実装されるログイン認証機能のようです。
この機能に、メール送信して本人認証機能やなどを実装していけば、
不特定多数のユーザーを登録させたいとう場合は便利
かもしれませんね。
今回の
自分のシステムの場合は、入室制限をかけて、権限毎に使用できる内容が変更できればよい
のでカスタマイズなども考えると、自前で一から下記の有志様のサイトなどを参考にログイン認証機能を実装していってもいいのかもしれません。
次回は、ログインしたら、トップページ(ログイン後のページ)に行けるところまでを作り込できればと思います。
開発の流れも理解してない状況で調べながらの開発なので時間が必要ですが、最後まで頑張りたいと思います。