2012-06-10 23 views
0

我開發的網站非常簡單,我有三個網頁。基於用戶角色的ASP.NET HTML生成

  1. Logon.aspx
  2. Register.aspx
  3. MyAccount.aspx

Logon.aspx代碼:

 if (ValidateUser(email, password)) 
     { 
      FormsAuthenticationTicket tkt; 
      string cookiestr; 
      HttpCookie ck; 
      tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
               DateTime.Now.AddMinutes(3), chkPersistCookie.Checked, 
               email + "@ticket"); 
      cookiestr = FormsAuthentication.Encrypt(tkt); 
      ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr); 
      if (chkPersistCookie.Checked) 
       ck.Expires = tkt.Expiration; 
      ck.Path = FormsAuthentication.FormsCookiePath; 
      Response.Cookies.Add(ck); 

      string strRedirect; 
      strRedirect = Request["ReturnUrl"]; 
      if (strRedirect == null) 
       strRedirect = "MyAccount.aspx"; 
      Response.Redirect(strRedirect, true); 
     } 
     else 
      Response.Redirect("logon.aspx", true); 

Register.aspx代碼:

private bool RegisterUser(string name, string surname, string email, string phone, string pass) 
    { 
     SqlConnection conn = new SqlConnection(@"Data Source=Server\SQL;Initial Catalog=Db;Integrated Security=True; User ID=user; Password =pass;"); 
     conn.Open(); 
     string insertQuery = @"INSERT INTO Users (Email, Name, Surname, Phone, Manager, Rank, Password) 
           VALUES (@Email, @Name, @Surname, @Phone, @Manager, @Rank, @Password)"; 
     SqlCommand cmd = new SqlCommand(insertQuery, conn); 

     cmd.Parameters.Add("@Email", email); 
     cmd.Parameters.Add("@Name", name); 
     cmd.Parameters.Add("@Surname", surname); 
     cmd.Parameters.Add("@Phone", phone); 
     cmd.Parameters.Add("@Manager", "[email protected]"); 
     cmd.Parameters.Add("@Rank", "1"); 
     cmd.Parameters.Add("@Password", pass); 

     try 
     { 
      int rowsAffected = cmd.ExecuteNonQuery(); 
     } 
     catch (Exception e) 
     { 

      throw; 
     } 
     finally 
     { 
      cmd.Dispose(); 
      insertQuery = string.Empty; 
     } 

一切都很完美。 現在,我要的是對MyAccount.aspx的Page_Load中:

  1. 幫助獲取Cookie
  2. 檢查用戶角色
  3. 基於用戶角色顯示所需的網站內容。

但我不知道該怎麼做。

  1. 我應該引用cookie來建立用戶角色嗎?
  2. 如何根據用戶角色生成HTML?

謝謝!

+2

請哈希你的密碼,而不是將它們存儲! –

+0

我之前做過哈希。謝謝! –

+0

這是你要搜索的內容嗎? 'HttpContext.Current.User.IsInRole(「RoleName」)'?還檢查一個可能會幫助你:http://stackoverflow.com/questions/10880286/implementing-security-in-asp-net-web-app-as-afterthought/10880528#10880528 – Aristos

回答

1

我不認爲你想要根據角色生成很多HTML,更像是你想讓你網站中的內容只能被某些角色訪問,即不同的頁面和控件。 This codeproject page正在做你所需要的。

+0

謝謝!正是我在找什麼。實際上讓內容可見/不可見,是否足夠安全? –

+0

如果你的意思是可見的,「只有標記只在客戶身上才發送給客戶」,那麼是的,你可以做到這一點。如果通過可見你的意思是隱藏一個div等客戶端然後否,這真的不是很安全。鑑於你的問題的性質,我懷疑前者。 –

+0

儘管如此,請確保您的資源安全,確保您的目錄被鎖定到正確的角色等。 –