Ako vykonať overovanie na základe formulárov v ASP.NET aplikácie pomocou C #.NET

Preklady článku Preklady článku
ID článku: 301240 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

Súhrn

Tento článok demonštruje, ako implementovať základe formulárov overovanie pomocou databázy pre ukladanie užívateľom.

Požiadavky

Nasledujúci zoznam popisuje Odporúčaný hardvér, softvér, sieťovej infraštruktúry a balíky service pack, ktoré potrebujete:
  • Microsoft Visual Studio .NET
  • Microsoft Internet Information Services (IIS) verzie 5.0 alebo novší
  • Microsoft SQL Server

Vytvoriť ASP.NET aplikáciu pomocou C# .NET

  1. Otvorené Visual Studio .NET.
  2. Vytvoriť novú aplikáciu ASP.NET Web, a uveďte názov a umiestnenie.

V súbore Web.config nakonfigurovať nastavenia zabezpečenia

Táto časť ukazuje, ako pridať a upraviť <authentication></authentication> a <authorization></authorization> konfigurácie sekcie nakonfigurovať ASP.NET aplikácie používať overovanie na základe formulárov.
  1. V roztoku Explorer, otvorte súbor Web.config.
  2. Zmeniť režim overovania formulárov.
  3. Vložte značku <Forms>a vyplňte príslušné atribúty. (Ďalšie informácie o týchto atribútov označovať MSDN dokumentáciu alebo QuickStart dokumentácie, ktoré je uvedené v </Forms>REFERENCIE oddiel) Kópia nasledujúci kód a potom kliknite Prilepiť ako HTML naUpraviť menu vložiť kód v <authentication></authentication> súboru:
    <authentication mode="Forms">
       <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" 
       protection="All" path="/" timeout="30" />
    </authentication> 
    					
  4. Odoprieť prístup k anonymným používateľom v <authorization></authorization> sekcie nasledovne:
    <authorization>
       <deny users ="?" />
       <allow users = "*" />
    </authorization>
    					

Vytvorte tabuľku databázy vzorky na obchod užívateľov Podrobnosti

Táto sekcia demonštruje ako vytvoriť ukážkovú databázu na uložiť užívateľské meno, heslo a úlohu pre používateľov. Potrebujete stĺpce Rola Ak chcete uložiť roly používateľov v databáze a implementovať role-based zabezpečenia.
  1. Na Štart menu, kliknite na tlačidloSpustiť, a potom zadajte Poznámkový blok otvoriť Poznámkový blok.
  2. Zvýraznite nasledujúci kód skriptu SQL, kliknite pravým tlačidlom myši kód, a potom kliknite na Kópia. V programe Poznámkový blok, kliknitePasta na Upraviť menu vložiť nasledujúce kód:
    if exists (select * from sysobjects where id = 
    object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[Users]
    GO
    CREATE TABLE [dbo].[Users] (
       [uname] [varchar] (15) NOT NULL ,
       [Pwd] [varchar] (25) NOT NULL ,
       [userRole] [varchar] (25) NOT NULL ,
    ) ON [PRIMARY]
    GO
    ALTER TABLE [dbo].[Users] WITH NOCHECK ADD 
       CONSTRAINT [PK_Users] PRIMARY KEY  NONCLUSTERED 
       (
          [uname]
       )  ON [PRIMARY] 
    GO
    
    INSERT INTO Users values('user1','user1','Manager')
    INSERT INTO Users values('user2','user2','Admin')
    INSERT INTO Users values('user3','user3','User')
    GO
    					
  3. Súbor uložte ako Users.sql.
  4. Na počítači Microsoft SQL Server, otvorte Users.sql v Analyzátor dotazu. Zo zoznamu databáz, kliknite krčmy, a Spustite skript. To vytvára vzorka užívateľov tabuľku a osadí tabuľke v Krčmy databáza sa použije aplikáciou tejto vzorky.

Vytvoriť stránku Logon.aspx

  1. Pridať nový webový formulár do projektu s názvom Logon.aspx.
  2. Otvorte Logon.aspx stránku v editore a prepnúť do HTML Zobraziť.
  3. Skopírujte nasledujúci kód a použitie Prilepiť ako HTML možnosť na Upraviť menu vložiť kód medzi<form>Tagy: </form>
    <h3>
       <font face="Verdana">Logon Page</font>
    </h3>
    <table>
       <tr>
          <td>Email:</td>
          <td><input id="txtUserName" type="text" runat="server"></td>
          <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName"
               Display="Static" ErrorMessage="*" runat="server" 
               ID="vUserName" /></td>
       </tr>
       <tr>
          <td>Password:</td>
          <td><input id="txtUserPass" type="password" runat="server"></td>
          <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass"
              Display="Static" ErrorMessage="*" runat="server" 
              ID="vUserPass" />
          </td>
       </tr>
       <tr>
          <td>Persistent Cookie:</td>
          <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>
          <td></td>
       </tr>
    </table>
    <input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p>
    <asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" />
    						
    Tento webový formulár sa používa na prezentovanie prihlasovací formulár používateľom, aby mohli poskytovať svoje užívateľské meno a heslo na prihlásenie do aplikácie.
  4. Prepnúť do návrhového zobrazenia a uložte stránku.

Kódu obsluhy udalostí tak, aby sa to overuje používateľské poverenia

Táto sekcia predstavuje kód, ktorý je umiestnený v code-behind stránke (Logon.aspx.cs).
  1. Dvakrát kliknite na Prihlásenie otvoriť Logon.aspx.cs súbor.
  2. Importovať požadované priestory názvov v súbore kód pozadu:
    using System.Data.SqlClient;
    using System.Web.Security;
    					
  3. Vytvoriť ValidateUser funkcia na overenie používateľských poverení pri pohľade databáza. (Uistite sa, že zmeniť reťazec pripojenia k bodu na vaše Databáza).
    private bool ValidateUser( string userName, string passWord )
    {
    	SqlConnection conn;
    	SqlCommand cmd;
    	string lookupPassword = null;
    
    	// Check for invalid userName.
    	// userName must not be null and must be between 1 and 15 characters.
    	if ( (  null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) )
    	{
    		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." );
    		return false;
    	}
    
    	// Check for invalid passWord.
    	// passWord must not be null and must be between 1 and 25 characters.
    	if ( (  null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) )
    	{
    		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed." );
    		return false;
    	}
    
    	try
    	{
    		// Consult with your SQL Server administrator for an appropriate connection
    		// string to use to connect to your local SQL Server.
    		conn = new SqlConnection( "server=localhost;Integrated Security=SSPI;database=pubs" );
    		conn.Open();
    
    		// Create SqlCommand to select pwd field from users table given supplied userName.
    		cmd = new SqlCommand( "Select pwd from users where uname=@userName", conn );
    		cmd.Parameters.Add( "@userName", SqlDbType.VarChar, 25 );
    		cmd.Parameters["@userName"].Value = userName;
    
    		// Execute command and fetch pwd field into lookupPassword string.
    		lookupPassword = (string) cmd.ExecuteScalar();
    
    		// Cleanup command and connection objects.
    		cmd.Dispose();
    		conn.Dispose();
    	}
    	catch ( Exception ex )
    	{
    		// Add error handling here for debugging.
    		// This error message should not be sent back to the caller.
    		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Exception " + ex.Message );
    	}
    
    	// If no password found, return false.
    	if ( null == lookupPassword ) 
    	{
    		// You could write failed login attempts here to event log for additional security.
    		return false;
    	}
    
    	// Compare lookupPassword and input passWord, using a case-sensitive comparison.
    	return ( 0 == string.Compare( lookupPassword, passWord, false ) );
    
    }
    					
  4. Môžete použiť jeden z dvoch metód pre generovanie formulárov overovania cookie a presmerovať užívateľa na príslušnú stránku v prípade cmdLogin_ServerClick . Ukážkový kód je k dispozícii pre oba scenáre. Použiť niektorú z ne podľa vašej požiadavky.
    • Volať metódu RedirectFromLoginPage automaticky generovať formy overovania cookie a presmerovať užívateľa na príslušnú stránku v cmdLogin_ServerClick udalosti:
      private void cmdLogin_ServerClick(object sender, System.EventArgs e)
      {
      if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
      	FormsAuthentication.RedirectFromLoginPage(txtUserName.Value,
      		chkPersistCookie.Checked);
      	else
      		Response.Redirect("logon.aspx", true);
      }
      						
    • Generovať overovania lístok, zašifrujte vytvorený súbor, vytvoriť cookie, pridať k odpovedi, a presmerovať užívateľa. To vám dáva viac ovládanie v ako vytvárať cookie. Môžete pridať aj vlastné údaje pozdĺž s FormsAuthenticationTicket v tomto prípade.
      private void cmdLogin_ServerClick(object sender, System.EventArgs e)
      {
         if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
         {
            FormsAuthenticationTicket tkt;
            string cookiestr;
            HttpCookie ck;
            tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
      DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
            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 = "default.aspx";
               Response.Redirect(strRedirect, true);
         }
         else
            Response.Redirect("logon.aspx", true);
      }
      						
  5. Uistite sa, že sa pridáva tento kód do InitializeComponent metóda v kóde, ktorý generuje návrhár formulára Web:
    this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);
    					

Vytvoriť Default.aspx stránku

Táto sekcia vytvorí skúšobnú stranu na ktorú používatelia budú presmerovaní po ich overenie. Keď používatelia prehľadávajú na túto stránku bez prvého prihlásenia k aplikácii, oni sú presmerovaní na stránku prihlásenia.
  1. Premenovať existujúci WebForm1.aspx stránky ako napríklad Default.aspx, a otvorenie v editore.
  2. Prepnite na zobrazenie HTML, a skopírujte nasledujúci kód medzi The<form>Tagy: </form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">
    						
    Toto tlačidlo sa používa na odhlásenie overovanie formulárov relácie.
  3. Prepnúť do návrhového zobrazenia a uložte stránku.
  4. Importovať požadované priestory názvov v súbore kód pozadu:
    using System.Web.Security;
    					
  5. Dvojitým kliknutím SignOut otvorený kód-za stránky (Default.aspx.cs) a kópia nasledujúci kód v popisovači udalosti cmdSignOut_ServerClick :
    private void cmdSignOut_ServerClick(object sender, System.EventArgs e)
    {
       FormsAuthentication.SignOut();
       Response.Redirect("logon.aspx", true);
    }
    					
  6. Uistite sa, že sa pridáva tento kód do InitializeComponent metóda v kóde, ktorý generuje návrhár formulára Web:
    this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);
    					
  7. Uložiť a zostaviť projekt. Teraz môžete použiť aplikácia.

Ďalšie poznámky

  • Možno budete chcieť ukladať heslá bezpečne v databáze. Ste môžete použiť FormsAuthentication trieda utility funkcie vymenoval HashPasswordForStoringInConfigFile pre šifrovanie hesiel, predtým, než si ich uložiť do databázy alebo konfiguračný súbor.
  • Možno budete chcieť uložiť informácie o pripojení SQL v konfiguračný súbor (Web.config) tak, že si môžete ľahko zmeniť, ak potrebné.
  • Môžete zvážiť pridanie kódu pre prevenciu hackerov, ktorí sa snažia používať rôzne kombinácie hesiel v prihlásení. Napríklad, môžete zahŕňajú logické, že akceptuje iba dva alebo tri pokusy o prihlásenie. Ak používateľ nemôže Prihláste sa určitom počte pokusov, možno budete chcieť nastaviť príznak Databáza neumožňuje daného používateľa o prihlásenie, kým používateľ re-enables svojho účet tým, že navštívite inú stránku alebo volajúceho podporu. V Navyše, mali by ste pridať vhodné chyba manipulácia kdekoľvek potrebné.
  • Pretože používateľ je určený na overovanie cookie, možno budete chcieť použiť Secure Sockets Layer (SSL) na túto aplikáciu tak že nikto môže klamať overovacím súborom cookie a iné cenné informácie, ktoré sú prenášané.
  • Overovanie na základe formulárov vyžaduje, aby váš klient alebo povoliť cookies vo svojom prehliadači.
  • Parameter časového limitu<authentication></authentication> časti Konfigurácia určuje interval, v ktorom overovacím súborom cookie sa regeneruje. Môžete si vybrať hodnotu, ktorá poskytuje lepší výkon a bezpečnosť.
  • Určitým, sprostredkujúca proxy a cache na internete môže cache Web server odpovedí, ktoré obsahujú hlavičky súboru Cookie, ktoré sú potom vrátil iný používateľ. Pretože používa súbor cookie aj overovanie na základe formulárov na overenie používateľov, to môže spôsobiť používateľom náhodne (alebo úmyselne) zosobnenie iný používateľ dostane cookie z sprostredkovateľské proxy alebo cache, ktoré bolo pôvodne určené pre nich.

Odkazy

Ďalšie informácie o tom, ako realizovať jednoduché overovanie na základe formulárov, ktorý používa <credentials></credentials> oddiel na ukladanie používatelia a heslá, odkazovať na nasledujúce GotDotNet ASP.NET QuickStart vzorky:
Overovanie na základe formulárov
http://QuickStarts.asp.net/QuickStartv20/aspnet/doc/Security/formsauth.aspx
Ďalšie informácie o implementovaní základe formulárov overovania, ktorý používa XML súbor na ukladanie používatelia a heslá, označovať Nasledujúca téma v .NET Framework Software Development Kit (SDK) dokumentácia:
Overenie formulárov pomocou súboru XML užívateľov
http://msdn2.Microsoft.com/en-us/library/1b1y85bh (vs.71) .aspx
Ďalšie informácie o ASP.NET Web aplikácie zabezpečenia, označovať nasledujúci Microsoft.NET Framework Developer's Guide dokumentácia:
ASP.NET Web aplikácie zabezpečenia
http://msdn2.Microsoft.com/en-us/library/330a99hc (vs.71) .aspx
Ďalšie informácie o priestore názvov System.Web.Security , označovať nasledujúci Microsoft.NET Framework Referenčné dokumenty:
System.Web.Security Namespace
http://msdn2.Microsoft.com/en-us/library/System.web.Security (vs.71) .aspx
Ďalšie informácie o ASP.NET konfigurácie, odkazovať na nasledujúci Microsoft.NET Framework Developer's Guide články:
ASP.NET konfigurácie
http://msdn2.Microsoft.com/en-us/library/aa719558 (VS.71) .aspx

ASP.NET konfigurácie sekcie
http://msdn2.Microsoft.com/en-us/library/w7w4sb0w (vs.71) .aspx
Informácie o ASP.NET bezpečnostné pokyny, nasledujúce MSDN bielej knihy:
Overovanie v ASP.NET: pokyny pre zabezpečenie platformy .NET
http://msdn2.Microsoft.com/en-us/library/ms978378.aspx

Vlastnosti

ID článku: 301240 - Posledná kontrola: 15. novembra 2012 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 64-bit Edition
Kľúčové slová: 
kbconfig kbhowtomaster kbsecurity kbweb kbmt KB301240 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 301240

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com