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

この記事は約 2 分で読めます。

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

ご無沙汰です。

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

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

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

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

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

前提となるModelの構造

TodoMODELの構造

    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; }
    }

TodoModelには、IDがあります。

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

UserModelの構造

    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; }
    }

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

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

class TodoesController:Controller
{
  TodoContext db = new TodoContext();

  public AtionResult Index()
  {
    view(db.todo)
  }
}

となっている個所を

class TodoesController:Controller
{
  TodoContext db = new TodoContext();

  public AtionResult Index()
  {
  var loginUser = db.User.FirstOrDefault(u => u.UserName == User.Identity.name);
    view(loginUser.todoes)
  }
}

とします。

解説をすると

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

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

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA