Я пытаюсь создать сеанс, в котором хранится информация об участниках, которую приложение может использовать для отображения определенной навигации и предоставления доступа к определенным страницам и функциям, относящимся к роли участника.
Мне удалось назначить мой MemberLoggedIn
объект для сессии следующим образом:
//code excerpt start...
MemberLoggedIn loggedIn = new MemberLoggedIn();
if (computedHash == member.Hash)
{
loggedIn.ID = member.ID;
loggedIn.Username = member.Username;
loggedIn.Email = member.Email;
loggedIn.Superuser = member.Superuser;
loggedIn.Active = member.Active;
Session["loggedIn"] = loggedIn;
}
else if (ModelState.IsValid) {
ModelState.AddModelError("Password", "Incorrect Username or Password.");
}
return View();
Это прекрасно работает. Затем я могу отправить свойства Session["loggedIn"]
в View следующим образом:
[ChildActionOnly]
public ActionResult Login()
{
if (Session["loggedIn"] != null)
ViewData.Model = Session["loggedIn"];
else
ViewData.Model = null;
return PartialView();
}
В частичном представлении я могу ссылаться на данные сеанса, используя Model.Username
или Model.Superuser
.
Однако, похоже, это не работает в контроллере или в пользовательском фильтре действий. Есть ли способ получить эквивалент Session["loggedIn"].Username
?