#c# #.net #asp.net-mvc #cookies #roles
#c# #.net #asp.net-mvc #файлы cookie #роли
Вопрос:
Я работаю над проектом, в котором разные роли пользователей. У меня есть ссылка администратора, которая отображается, если пользователь является администратором, и скрыта, если нет. Я использую:
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("Contact", "Contact", "Home")</li>
@if (Request.IsAuthenticated amp;amp; User.IsInRole("Admin"))
{
<li>@Html.ActionLink("Admin", "AdminIndex", "Account")</li>
}
При первоначальном входе в систему все работает нормально, однако, когда я запускаю проект локально и останавливаю его, а затем перезапускаю, мое имя пользователя (с ролью администратора) все еще входит в систему, однако ссылка администратора исчезает, и мне приходится выйти из системы, а затем снова войти в систему с тем же пользователем, чтобы отобразить ссылку администратора. Есть ли какой-либо способ заставить его запоминать роль пользователя при перезапуске проекта.
Я думаю, что способ запоминания имени пользователя и пароля при перезапуске проекта заключается в моем контроллере:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
if (ModelState.IsValid amp;amp;
WebMatrix.WebData.WebSecurity.Login(model.UserName, model.Password,
persistCookie: model.RememberMe))
{
return RedirectToLocal(returnUrl);
}
ModelState.AddModelError("", "The user name or password provided is
incorrect.");
return View(model);
}
Но я не уверен, потому что это было встроено в проект. Нужно ли мне добавить действие для ссылки на мои роли пользователей, имеющее какое-либо отношение к cookie в моей модели для подражания, например, в модели входа в систему?
Комментарии:
1. может быть, использовать
session timeout
? Сохранитеintial_login_time/last_active_time
пользователя и перед обслуживанием любой страницы проверьте, находится ли эта разница во времени в пределах таймаута, таким образом, при перезапуске приложенияintial_login_time
значение будет нулевым…2. На самом деле я смог сделать это с помощью [InitializeSimpleMembership] на HomeController, только это было на контроллере учетной записи