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)存储在会话中是不好的做法。好的做法是创建自定义用户主体或身份,并将应用程序中经常使用的所有用户数据存储在其中。

您最好创建自定义主体或身份并将该信息存储在身份验证 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 回答