У меня есть веб-системы, разработанной с помощью ASP.NET MVC 4.пользователь Капля проверку подлинности в ASP.NET MVC
У нас есть управление пользователями, что позволяет пользователям редактировать/удалять пользователей. В функции удаления, в настоящее время я делаю только 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
удаляет его из базы данных? Я не знаю .. заставляют печенье истекать. Я просто не хочу реализовывать консультацию для каждого действия, выполняемого в навигации, чтобы проверить, остается ли пользователь «живым» в базе данных.
Любые идеи, предложения?
спасибо за ваше время. Я думаю, что это подход ... но мне все еще интересно, есть ли другие варианты ... Я знаю, что в java мы можем использовать 'JMX-интерфейс', чтобы сделать это ... в C# должно быть что-то похожее. –
Вы можете создавать свои собственные обработчики сеансов и перечислять их, но это в значительной степени то, что делает 'List'. Куки-файлы не существуют на стороне сервера, поэтому невозможно изменить один из них, который не является частью текущего запроса. –
Нет ничего другого. Я имею в виду, что не существует способа для 'formsauthentication.signout()' передачи идентификатора 'например'? to 'signout()' удаленный пользователь? –