我会看看能否清楚地解释清楚。我有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,但我不知道从哪里开始。
如果我没有提供足够的信息,我道歉。如果需要,我会提供更多。
答案 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"])