2013-03-27 95 views
0

我已經在登錄時創建會話,在該會話中我已經放置了用戶對象。更新會話值

public sealed class MyContext 
{ 

    [ThreadStatic] 
    private static MyContext staticContext = null; 
    public HttpContext Context 
    { 
     get 
     { 
      return HttpContext.Current; 
     } 
    } 


    private MyContext() 
    { 

    } 

    public static MyContext Current 
    { 
     get 
     { 
      MyContext myContext = null; 
      HttpContext context = HttpContext.Current; 
      if (context != null) 
      { 

       //it in the Items collection (a per request store) 
       if (context.Items.Contains("CONTEXT_KEY")) 
        myContext = context.Items["CONTEXT_KEY"] as MyContext; 
       else 
       { 
        myContext = new MyContext(); 
        myContext.Context.Items["CONTEXT_KEY"] = myContext; 
       } 
      } 
      else if (staticContext != null) 
      { 
       myContext = staticContext; 
      } 
      else 
      { 
       //create a new instance of static context as there is no web request 
       staticContext = new MyContext(); 
       myContext = staticContext; 
      } 
      return myContext; 
     } 
    } 

    public MyUser User 
    { 
     get 
     { 
      MyUser user = null; 
      if (Current.Context.Session["LoggedInUser"] != null) 
       user = (MyUser)Current.Context.Session["LoggedInUser"]; 
      else 
      { 
       user = UserDetail.GetUser(HttpContext.Current.User.Identity.Name); 
       if (user == null) 
       { 
        //if there is no userID, create anonymous user 
        user = new MyUser(); 
        user.IsAnonymous = true; 
        user.UserID = 0; 
       } 
       //cache in session 
       Current.Context.Session["User"] = user; 
      } 
      return user; 
     } 
     set 
     { 
      Current.Context.Session["User"] = value; 
     } 
    } 


}//end class 

現在我使用這樣的背景下整個應用程序,我在一個案件中面臨的問題,如果用戶登錄和同時管理員停用該用戶,我無法停止用戶活動,這是因爲用戶的信息正在開會。 所以請建議我在管理員停用該用戶時如何更新特定用戶的信息。

回答

0

如果我明白你的問題,你只能創建一個活動!當管理員停用用戶時,它可能會生成一個事件,並且您的用戶會話會立即響應。 這只是一個想法,我不習慣會話!

+0

@其他:我覺得一樣,但沒有任何想法如何更新特定用戶的信息。 – Vijjendra 2013-03-27 18:58:43

0

如果我在那種情況。我將不得不重構一些代碼來偶爾檢查後端以重新驗證用戶身份 - 這樣如果登錄失效,它將被捕獲。

0

您需要檢查每個傳入的頁面請求,以查看用戶是否已停用,並重新設置會話變量。例如,您可以編寫一個繼承Page類並重寫Page_Load的基類。基類Page_Load可以執行檢查。對於需要檢查的所有頁面(可能是所有頁面),它們應該簡單地繼承Base類而不是Page類。