在Asp.NET MVC中是否可以以proframically方式注销用户?我知道你可以使用:
FormsService.SignOut();
但这指的是发出请求的网页的上下文。我试图阻止用户登录两次。所以,如果我打电话:
MembershipUser membershipUser = Membership.GetUser(userName);
if (membershipUser.IsOnline == true)
{
// log this user out so we can log them in again
FormsService.SignOut();
}
调用FormsService.SignOut();
与用户的上下文没有关系,并且已经登录了另一个web浏览器?
答案 0 :(得分:2)
实现此目标的一种常用方法是,在每个页面加载时,检查当前用户是否需要注销。
if (User.Identity.IsAuthenticated && UserNeedsToSignOut())
{
FormsAuthentication.SignOut(); // kill the authentication cookie:
Response.Redirect("~/default.aspx"); // make sure you redirect in order for the cookie to not be sent on subsequent request
}
你可能会担心这种方法会太慢,
“为什么我必须在每个页面加载时调用这个该死的函数?它可能每次都会访问数据库!”
它不需要很慢。您可以缓存在任何给定时间不应登录的用户列表。如果他们的用户名在该缓存中,则下次访问页面时将触发注销代码。
答案 1 :(得分:1)