3

そのため、ログインしたユーザーのみが自分で休日を予約できるようにしたいと考えています。これを行う最も簡単な方法は、ログインしているユーザーの「名前」と個人テーブルの「名前」を比較することだと思います。そう....

public ActionResult Create()
    {
        string xx = (string)Session["usernameID"];
        int? currentPersonID = Convert.ToInt32(xx);

        string userNameComparedAgainstLoginName = // here is where i want to say 'name' of logged in user

        CreateModel model = new CreateModel();
        model.currentPersonID = currentPersonID.Value;
        model.PList4DD = db.People.ToList();


        if (userNameComparedAgainstLoginName == model.userName)
        {
            ViewBag.Id = new SelectList(db.People, "Id", "Name");
            return View(model);
        }
        else
        {
            TempData["canOnlyBookHolidaysForYourself"] = "I'm afraid you can only book holidays for yourself";
            return RedirectToAction("Index");
        }
    }

ユーザー登録時に指定された名前は、データベースで使用されている名前と同じになります。

ログインした「名前」にアクセスする方法を誰か教えてもらえますか?

ありがとう

4

2 に答える 2

4

ユーザー名/電子メール/ID などのログに記録されたユーザー データをセッションに保存することは、悪い習慣です。カスタム ユーザー プリンシパルまたは ID を作成し、アプリケーションで頻繁に使用されるすべてのユーザー データをそこに格納することをお勧めします。

カスタム プリンシパルまたは ID を作成し、その情報を認証 Cookie に保存して、User.Identity.XXX 経由でアクセスすることをお勧めします。

カスタム プリンシパルの作成方法が詳しく説明されているリンクを次に示します。 ASP.NET MVC - カスタム IIdentity または IPrincipal を設定する

または、HttpContext にあるデフォルトの User.Identity を使用するだけでよいような複雑なメカニズムが必要ない場合。

幸運を!

于 2012-12-19T09:58:50.130 に答える
1

から名前を取得できます。User.Identity

あなたはただ使う必要がありますUser.Identity.Name

于 2012-12-19T10:00:58.830 に答える