2010-06-14 44 views
8

Asp.NET MVC中是否有可能正確地註銷用戶?我知道你可以使用:以編程方式註銷「特定」用戶

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();對用戶說的上下文無關,與誰已經登錄另一個網頁瀏覽器?

回答

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 
} 

您可能會擔心這種方法會太慢,

「爲什麼我必須把這個該死的功能,每個頁面加載?這可能訪問數據庫每一次!」

它不需要太慢。您可以緩存任何時候不應登錄的用戶列表。如果他們的用戶名在該緩存中,那麼退出代碼將在他們下一次訪問頁面時被觸發。