C#根据cookie中的数据填充下拉列表

时间:2011-06-08 16:46:10

标签: c# sql webforms

我会看看能否清楚地解释清楚。我有2个网页表格。一个是基本的表单身份验证登录页面,另一个表单显示来自多个服务器的任务。我正在创建一个存储UserID的cookie。这是我的cookie的代码:

        FormsAuthenticationTicket tkt = new FormsAuthenticationTicket(1, txtUser.Text, DateTime.Now, DateTime.Now.AddMinutes(120), true, rdr.GetInt32(0).ToString(), FormsAuthentication.FormsCookiePath);
        string hash = FormsAuthentication.Encrypt(tkt);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);

在我的另一个表单中,我有一个下拉框,通过Servers表显示服务器IP的所有服务器。

public void Populate()
        {
            SqlConnection myConnection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
            myConnection1.Open();

            SqlCommand cmd1 = new SqlCommand("SELECT ServerIP FROM Servers", myConnection1);
            SqlDataReader dropReader;
            dropReader = cmd1.ExecuteReader();

            drpChoose.DataSource = dropReader;
            drpChoose.DataTextField = "ServerIP";
            drpChoose.DataValueField = "ServerIP";
            drpChoose.DataBind();
        }

我在页面加载中调用Populate。我有另一个存储权限的表。它具有UserID,ServerID和Permission(读取或执行)。假设UserID 1仅与ServerID 1相关联,其IP为192.168.0.10。如何在下拉列表中显示此一个服务器IP?我很确定如果我将cookie传递给第二种形式,我可以从中获取UserID,但我不知道从哪里开始。

如果我没有提供足够的信息,我道歉。如果需要,我会提供更多。

1 个答案:

答案 0 :(得分:1)

看起来你需要加入你的权限表,比如

SELECT ServerIP from Servers s, Permissions p where p.serverid = s.serverid and p.userid = :userIdFromCookie

然后,您需要将用户ID从cookie传递到Populate方法,并使用DbParameter将值传递给Sql命令。

类似的东西(这是伪代码,因为我不在我的开发机器上)

cmd.AddInParameter(":userIdFromCookie",dbType.AnsiString, Request.Cookies["mycookie"]["userid"])