2011-06-08 85 views
0

我會看看是否可以清楚地解釋這一點。我有2個Web表單。一個是基本的Forms Authentication登錄頁面,另一個表單顯示來自多個服務器的任務。我正在創建一個存儲用戶ID的cookie。這裏是我的Cookie代碼:C#根據來自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); 

我的其他形式,我有一個下拉框,顯示由服務器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(); 
     } 

我打電話填寫頁面加載。我有另一個存儲權限的表。它具有UserID,ServerID和權限(讀取或執行)。假設用戶ID 1僅與具有IP 192.168.0.10的服務器ID 1相關聯。我怎樣才能讓這個服務器IP在下拉菜單中顯示?我很確定,如果我將cookie傳遞給第二種形式,我可以從中獲取用戶ID,但我不知道從哪裏開始。

如果我沒有提供足夠的信息,我很抱歉。如果需要,我會提供更多。

回答

1

看起來你需要做一個連接到您的權限表像

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

然後,你需要從你的cookie中的用戶ID傳遞到填充方法和使用的DbParameter來將值傳遞給您的Sql命令。

類似的信息(這是順便說一下僞正如我在開發機器可不是)

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

我所做的加入,但不知道如何在cookie中傳遞。我將HTTPCookie傳遞給Populate還是傳遞UserID? – Matt 2011-06-08 18:17:02

+0

我會從您的頁面加載cookie中檢索用戶標識,然後將用戶標識傳入填充。 (Request.Cookies [「userID」]!= null) – Rich 2011-06-08 18:18:58

+0

我添加了代碼。 int.TryParse(Request.Cookies [「userID」]。ToString(),out uid); 填充(uid);但即使cookie顯示正確的用戶ID仍然爲0 – Matt 2011-06-08 19:57:18

相關問題