0

我在下面的班级有问题:

我想在没有 Session 的情况下保存 UserID,当然还有 Querystring,我想我可以将它存储在我的 UserClass 中。

因此,当我尝试获取 ID 时,例如:Default.aspx:

MyUserClass  userclass=new MyUserClass();//global

//(at button click)
userclass.GetUser(TextBox1.Text, TextBox2.Text);
int UserID=userclass.UserID;

当我重新加载页面 UserID=0 时,我可以了。然后我尝试为此使用静态变量。例子:

static MyUserClass  userclass=new MyUserClass(); //global
//(at button click)
    userclass.GetUser(TextBox1.Text, TextBox2.Text);
    int UserID=userclass.UserID;

当我也重新加载页面时,我得到了 ID,但是当其他人登录时,我的 ID 将更改为另一个 ID

我怎么能用这种方式做到这一点,或者我的意思是用属性?

课程是:

public class MyUserClass
{
    private  int _UserID;
    public  int UserID
    {
        get
        {
            return _UserID;
        }
    }


    public int  GetUser(string UserName, string Pass)
    {
        int UserID=0;
        try
        {

            DB.conn.Close();

            SqlCommand command = new SqlCommand("pUserkontrol", DB.conn);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.AddWithValue("@puserName", UserName);
            command.Parameters.AddWithValue("@pPass", Pass);
            DataTable dt = new DataTable();
            DB.conn.Open();
            SqlDataReader dr = command.ExecuteReader();

            dt.Load(dr);
            DB.conn.Close();
            if (dt.Rows.Count < 1)
            {

            }

            else
            {
                foreach (DataRow datarow in dt.Rows)
                {
                    _UserID = Convert.ToInt32(datarow["UserID"]);
                    //UserID = _UserID;



                }

            }
        }
        catch (Exception ex)
        {



        }



        return UserID;


    }
}
4

1 回答 1

0

网络本质上是无状态的,因此每个新请求都“覆盖”了 UserId 值,因为它没有任何东西可以将请求绑定回您的类。您需要使用某种存储机制。正如您使用会话和查询字符串打折的那样,我建议滚动您自己的轻量级 ASP.NET 成员资格提供程序并实现 IIdentity 和 IPrincipal 并通过提供程序创建身份验证票证 (Cookie) 以保留您的登录后详细信息 (userId)。看看 Brady Gasters 博客和那里发布的关于如何做到这一点的评论。

http://www.bradygaster.com/custom-authentication-with-mvc-3.0

这篇文章使用 Sessions 实现了 MVC 3 中的成员资格,但是页面上的评论和其他链接显示了如何操作代码和使用 cookie 身份验证。在 Web 表单中实现它(如果您使用的是 Web 表单)也应该相当简单。

于 2012-08-16T11:19:32.273 回答