2017-06-29 17 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. セッション変数の値が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

関連する問題