【发布时间】:2016-10-31 23:20:31
【问题描述】:
我有一个使用 ASP.NET MVC 4 开发的 Web 系统。
我们有一个用户管理,允许用户编辑/删除其他用户。
在删除功能上,目前我只在数据库上执行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 过期。
当ZXC 将他从数据库中删除时,有没有办法在 IIS 上删除 ABC 会话?
我不知道.. 强制 cookie 过期。我只是不想为导航中完成的每个操作实施咨询,以检查用户在数据库中是否仍然“活着”。
有什么想法、建议吗?
【问题讨论】:
标签: c# asp.net-mvc authorize-attribute