2016-01-02 66 views
0

在我正在處理的項目中,管理員可以刪除用戶發佈的評論。當評論被刪除時,我會調用一個函數來檢查用戶是否仍然有足夠的評論來訪問網站的特定部分。如何在角色更改後退出特定用戶?

如果用戶沒有足夠的意見,他的角色變化和這種方法被稱爲:

public void AfterRoleChanges(string c) 
    { 
     var authenticationManager = System.Web.HttpContext.Current.GetOwinContext().Authentication; 
     authenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); 

     var user = UserManager.FindById(c); 
     var identity = UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie); 

     authenticationManager.SignIn(new AuthenticationProperties { IsPersistent = false }, identity); 
    } 

其中c =用戶ID。但問題在於,如果管理員點擊刪除按鈕,管理員會以該用戶身份登錄並登錄,因爲身份驗證管理員只能從「當前」上下文中調用。

有沒有辦法獲得特定userId的authenticationmanager?

+1

我有一種感覺,你在這裏誤入歧途。某人如何從某人自己的會話中註銷另一個用戶?用戶仍然*認證*,刪除角色與*授權*有關。你必須確保用戶從角色中刪除時,會注意到他們沒有被授權*。也許你可以在這種情況下給他們一個體面的信息。 –

+0

@GertArnold向用戶添加角色時,角色不會自動更新。您首先必須註銷並重新獲得新角色。這就是爲什麼我想知道一種讓用戶在任何角色發生變化時立即註銷並立即登錄的方法。 – Eselko

+0

是的,我說:他們只能注意到通過更改授權。你永遠不能(例如)刪除他們的本地認證令牌/ cookie。他們爲什麼要知道呢?也許他們可以繼續做他們正在做的事情,因爲授權在那裏沒有改變。 –

回答

0

HttpContext.Current有一個HttpContext類型。您可以在靜態類中定義列表或字典,以便在登錄時存儲上下文,並在註銷時將其丟棄。通過訪問列表,您可以訪問所有用戶並根據需要進行搜索。

建議使用Dictionary,因爲您可以將用戶ID作爲關鍵字存儲在上下文中。

希望它有幫助。

相關問題