我使用会话变量来存储登录的用户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;
}
答案 0 :(得分:0)
根据你说的,User1和User2的值可能是静态变量的存储。您应该检查或调试问题。
最好,而不是