2017-06-29 27 views
0

我使用會話變量來存儲登錄的用戶ID,此會話變量稍後在應用程序中用於顯示/隱藏應用程序中的某些表單。 這工作正常,並基於登錄的用戶在菜單中啓用/禁用所需的形式。 有時在使用系統時突然出現其他用戶的菜單和名稱,例如:會話變量衝突

User1 has access to forms a,b,c

User2 has access to forms x,y,z.

User1登錄並使用他的形式突然有可以訪問的User2和我們展示它顯示的用戶名上屏的形式: logged in user as User2. 我認爲這是因爲session變量的值爲User2。兩個用戶都使用不同的客戶機。

請告知如何解決這個問題。
以下代碼在登錄表單中用於收集會話變量的值。

var objUser = con.PR_Login(txtUser.Text, txtPass.Text); 
       foreach(var user in objUser) 
       { 
        //HdnuserType.Value=user. 
        string ENCRYPT_VALUES = user.UserID + "|" + user.UserName + "|" + user.UserRole + "|" + user.CompID + "|" + "|" + user.DeptID + "|" + "|" + user.CntrID + "|" + user.CompanyName; 
        ENCRYPT_USER_DTL=ENDE.Encrypt(ENCRYPT_VALUES); 

        Session["EN_USER_DTL"] = ENCRYPT_USER_DTL; 
        Session["UserId"] = user.UserID; 
        Session["LOGINNAME"] = user.UserName; 
        Session["UserRole"] = user.UserRole; 
        Session["CompID"] = user.CompID; 
        Session["CntrID"] = user.CntrID; 
        Session["DeptID"] = user.DeptID; 
        Session["CompName"] = user.CompanyName; 
        HdnuserType.Value = user.UserRole; 
        Session["EmailID"] = user.Email; 
        s_CompID = Convert.ToInt32(user.CompID); 
        s_UserName = user.UserName.ToString(); 
       } 

These variables are checked in the masterpage, accordingly the menus are displayed 

ENCRYPT_VALUE = Login.ENCRYPT_USER_DTL.ToString(); 
        DECRYPT_VALUE = ENDE.Decrypt(ENCRYPT_VALUE.ToString()); 
        string[] USER_DETAILS = DECRYPT_VALUE.ToString().Split(new char[] { '|' }); 
        txtusername.Text = USER_DETAILS[1].ToString(); 
        if (USER_DETAILS[2] == "Sadmin") 
        { 
         sadminmenu.Visible = true; 
        } 
        if (USER_DETAILS[2] == "Admin") 
        { 
         adminmenu.Visible = true; 
        } 
+1

看來你的代碼有問題。但是,除非我們有[可以重現問題的代碼或信息](// stackoverflow.com/help/mcve),否則我們無能爲力。否則,我們只是盲目猜測。 – FrankerZ

+1

顯示會話創建時的代碼以及它在哪裏使用(表單) –

+0

這裏是我的代碼,下面的代碼用於登錄表單,我從中獲取值到會話變量 – Shah

回答

0

據你所說,User1和User2的值可能是存儲在靜態變量中的。你應該檢查或調試問題。

最好,thanhnt