У меня есть веб-система, разработанная с помощью ASP.NET MVC 4.
У нас есть система управления пользователями, которая позволяет пользователям редактировать / удалять других пользователей. В функции удаления, в настоящее время я делаю только delete
в базе данных.
Итак, вот мой login
контроллер / метод:
[HttpPost]
public ActionResult Login(LoginViewModel loginViewModel)
{
if (_loginService == null)
_loginService = new LoginService();
var result = _loginService.Login(loginViewModel.User, loginViewModel.Password);
if (!result.Error)
{
var userData = JsonConvert.SerializeObject(result.User);
FormsAuthentication.SetAuthCookie(result.User.Id, false);
var ticket = new FormsAuthenticationTicket(1, result.Id, DateTime.Now, DateTime.Now.AddMinutes(9999), true, userData, FormsAuthentication.FormsCookiePath);
var encryptedCookie = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedCookie) { Expires = DateTime.Now.AddHours(14) };
Response.Cookies.Add(cookie);
}
return new JsonResult
{
Data = result
};
}
И я обрабатываю этот возврат на стороне клиента с помощью некоторого javascript. Сейчас это работает нормально.
Для каждого контроллера, который должен быть аутентифицирован, у меня есть атрибут [Authorize]
.
Допустим, я только что вошел в систему с пользователем ABC
. Пока ABC
cookie жив, он может нормально перемещаться ... проблема в том, что когда какой-то пользователь (скажем, ZXC
) удаляет пользователя ABC
, он все равно будет нормально перемещаться, пока не истечет срок действия cookie.
Есть ли способ сбросить ABC
сеанс в IIS в момент, когда ZXC
удаляет его из базы данных? Я не знаю ... принудительно истечет срок действия куки. Я просто не хочу реализовывать консультации для каждого действия, выполняемого в навигации, чтобы проверить, "жив ли" ли пользователь в базе данных.
Есть идеи, предложения?