即使不使用会话也可以交换用户数据-ASP.NET MVC

0 c# asp.net asp.net-mvc username user-accounts

当多个用户登录到网站时,所有先前登录的用户都可以看到最后登录的用户详细信息。这导致了严重的漏洞问题。

我没有在存储用户数据时使用任何会话变量,而是在用户登录到我的网站后,我将其acc详细信息保留在如下的帮助器类文件中。在我的所有其他页面中,正在使用诸如UserData.userid,UserData.username等的用户详细信息...

public class UserData
    {
        public static int userid;
        public static string username;
        public static string useremail;

        public int user_id
        {
            get { return userid; }
            set { userid = value; }
        }

        public string user_name
        {
            get { return username; }
            set { username = value; }
        }

        public string user_email
        {
            get { return useremail; }
            set { useremail = value; }
        }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 5

您将此类的字段声明为静态。这意味着类UserData的每个实例在这些字段中将具有相同的值。
请参阅此处有关static关键字的文档,并在设置这些值时为仍在程序中的每个实例设置相同的值。

您需要删除static关键字,但鉴于你真的没有任何使用这些字段,你可以删除它们,并简单地改变你的类使用自动实现的属性,而不是

public class UserData
{
    public int user_id {get;set;}
    public string user_name {get;set;}
    public string user_email {get;set;}
}
Run Code Online (Sandbox Code Playgroud)