以编程方式注销“特定”用户

时间:2010-06-14 17:48:07

标签: asp.net asp.net-mvc forms

在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浏览器?

2 个答案:

答案 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)