我有一个使用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过期。
有没有办法在ZXC
从数据库中删除ABC
时立即终止ABC
的IIS会话呢?我不知道是否可以强制让cookie过期。我只是不想在每次导航时都实现一个查询,以检查用户是否仍然存在于数据库中。
有什么想法或建议吗?
List<string>
所做的。服务器端不存在 Cookie,因此无法更改不属于当前请求的 Cookie。 - Michael Coxonformsauthentication.signout()
方法,以注销远程用户吗? - Marllon Nasser