動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
技術記事

ASP.NETでIndex時にログイン中ユーザーのデータのみを出力する方法

バイブス父さん
現役の業務SE
2020年2月9日2 min read
ASP.NETでIndex時にログイン中ユーザーのデータのみを出力する方法

みなさんこんにちは!ひろぽんです!

ご無沙汰です。

最近ASP.NETの勉強をしているのですが、いろいろなことができるようになってきました!

ログイン機能やロール情報に応じて権限を付与する機能。

Modelを追加して、CRUDページを作成したりと!

Webアプリケーションはおもしろいなーーと思うわけなのですが、、、

今回はそんな中から、ログイン中にユーザーに紐づいている情報のみを表示する仕組みを解説していこうと思います!

前提となるModelの構造

TodoMODELの構造

TodoMODELの構造 (csharp)#38715cea3d9b
    public class Todo
    {
        public int Id { get; set; }
        public string Sammary { get; set; }
        public string Detail { get; set; }
        public DateTime Limit { get; set; }
        public bool Done { get; set; }
 
        public virtual User User { get; set; }
    }
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です

TodoModelには、IDがあります。

また概要と詳細があり、期限と完了フラグがあります。

UserModelの構造

UserModelの構造 (csharp)#17084a70a2be
    public class User
    {
        public int id { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public virtual ICollection<Todo> todoes { get; set; }
    }
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です

スキャフォールドで生成したTodoControllerのIndexメソッドに追記する

Todoモデルをスキャフォールドして作成したControllerのIndexに下記のように追記します。

スキャフォールドで生成したTodoControllerのIndexメソッドに追記する (csharp)#b570e149f37c
class TodoesController:Controller
{
  TodoContext db = new TodoContext();
 
  public AtionResult Index()
  {
    view(db.todo)
  }
}
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です

となっている個所を

スキャフォールドで生成したTodoControllerのIndexメソッドに追記する (csharp)#20d6f23ab92f
class TodoesController:Controller
{
  TodoContext db = new TodoContext();
 
  public AtionResult Index()
  {
  var loginUser = db.User.FirstOrDefault(u => u.UserName == User.Identity.name);
    view(loginUser.todoes)
  }
}
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です

とします。

解説をすると

var loginUser = db.User.FirstOrDefault(u => u.Name == User.Identity.Name);

これでログインユーザーの情報をdbからとってきます。

その情報をview(loginUser.todoes)で表示しているという感じですね!

ですがこのような形でdbからデータを取得するには、Todoデータを登録する際に、ログイン中のユーザー情報を付与したうえで登録しなければいけません。

この記事のコードと手順は ぜんぶ動作検証済み。 安心して現場で試してくれ。
バイブス父さん

現役の業務SE。C# / SQL Server 保守の現場から、コードも人もキャリアも全部書く。 実体験ベース。

運営者について