Я создаю приложение MVC 5 и столкнулся со следующей проблемой: я хочу показать пользователю пункт меню после входа пользователя, если у пользователя есть соглашение со мной.MVC 5 - установить переменную сеанса при входе в систему
Я хочу, чтобы установить переменную сеанса в момент входа пользователя в систему как:
Session["HasAgreement"] = Agreement.HasAgreement(userId);
, а затем в моем файле _Layout.cshtml, где я построю свое меню сделать что-то вроде:
@if (Session["HasAgreement"] == "True")
{
<li>@Html.ActionLink("Agreement", "Agreement", "Home")</li>
}
Моя проблема возникает в AccountController, где я добавил логику стандартного Вход действий:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
var userId = User.Identity.GetUserId();
Session["HasAgreement"] = Agreement.HasAgreement(userId);
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
Это стандартный вход MVC 5 - за исключением того, что я добавил две строки сразу после «case SignInStatus.Success:», где я пытаюсь получить userId, а затем установить переменную Session.
Моя проблема заключается в том, что в этот момент времени пользователь не аутентифицирован (я думал, что это произошло в SignInManager выше).
Как установить переменную сеанса сразу после входа пользователя в систему?
возможно дубликат [Asp.net идентичность: User.Identity.GetUserId() всегда утративший User.Identity.IsAuthenticated является ложным во все дни] (http://stackoverflow.com/questions/25439275/asp-net-identity-user-identity-getuserid-is-always-null-and-user-identity-is) – st4hoo
Да, это правда! Это дубликат. Я просто не мог найти ответ, когда искал раньше! Спасибо. – olf
st4hoo, если вы оставите ответ, я могу отметить его как правильно. – olf