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

Preklady článku Preklady článku
ID článku: 308157 - 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 ukazuje ako realizovať na základe formulárov overovanie pomocou databázy ukladať užívateľov.

Požiadavky

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

Vytvorenie aplikácie ASP.NET pomocou Visual Basic .NET

  1. Otvorenie programu Visual Studio .NET.
  2. Vytvoriť novú aplikáciu ASP.NET Web, a zadajte názov a umiestnenie.

Nakonfigurujte nastavenie zabezpečenia v súbore Web.config

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žiť 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 na Prilepiť ako HTML na Upraviť 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. Odmietnutie prístupu k anonymný užívateľ v <authorization></authorization> časti takto:
    <authorization>
    	<deny users ="?" />
    	<allow users = "*" />
    </authorization>
    					

Vytvoriť vzorové databázy tabuľku uchovávať údaje používateľov

Táto časť ukazuje ako vytvoriť ukážkovú databázu na uložiť meno používateľa, heslo a úlohu pre užívateľov. Potrebujete stĺpci úlohu Ak chcete uložiť roly používateľa v databáze a realizovať na základe rolí zabezpečenia.
  1. V ponuke Štart systému Windows kliknite na položku spustiťa zadajte Poznámkový blok Ak chcete 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 položku Kopírovať. V Poznámkový blok, kliknite na Prilepiť na Upraviť menu vložiť nasledujúci 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čmya spustiť skript. To vytvára tabuľku vzorka užívateľov a vyplnené tabuľky v databáze krčmy s Táto vzorka aplikácie.

Vytvoriť stránku Logon.aspx

  1. Pridať nový webový formulár do projektu s názvom Logon.aspx.
  2. Logon.aspx stránku otvoriť v editore a prepnúť do formátu HTML Zobraziť.
  3. Skopírujte nasledujúci kód a použiť možnosť Prilepiť ako HTML 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 súčasné prihlasovacieho formulára používateľom, aby mohli poskytovať svoje užívateľské meno a heslo na prihlásenie do aplikácie.
  4. Prejdite do návrhového zobrazenia a uložiť 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.vb).
  1. Otvorte súbor Logon.aspx.vb.
  2. Importovať požadované priestory názvov v súbore kód pozadu:
    Imports System.Data.SqlClient
    Imports 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ázy.)
    Private Function ValidateUser(ByVal userName As String, ByVal passWord As String) As Boolean
            Dim conn As SqlConnection
            Dim cmd As SqlCommand
            Dim lookupPassword As String
    
            lookupPassword = Nothing
    
            ' Check for an invalid userName.
            ' userName  must not be set to nothing and must be between one and 15 characters.
            If ((userName Is Nothing)) Then
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.")
                Return False
            End If
            If ((userName.Length = 0) Or (userName.Length > 15)) Then
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of userName failed.")
                Return False
            End If
    
            ' Check for invalid passWord.
            ' passWord must not be set to nothing and must be between one and 25 characters.
            If (passWord Is Nothing) Then
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.")
                Return False
            End If
            If ((passWord.Length = 0) Or (passWord.Length > 25)) Then
                System.Diagnostics.Trace.WriteLine("[ValidateUser] Input validation of passWord failed.")
                Return False
            End If
    
            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 the users table given a 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 = cmd.ExecuteScalar()
    
                ' Cleanup command and connection objects.
                cmd.Dispose()
                conn.Dispose()
            Catch ex As Exception
                ' 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)
            End Try
    
            ' If no password found, return false.
            If (lookupPassword Is Nothing) Then
                ' You could write failed login attempts here to the event log for additional security.
                Return False
            End If
    
            ' Compare lookupPassword and input passWord by using a case-sensitive comparison.
            Return (String.Compare(lookupPassword, passWord, False) = 0)
    
    End Function
    					
  4. Môžete použiť jednu z dvoch metód na vytváranie formulárov overovací súbor 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ť buď ich podľa vašich požiadaviek.
    • Volať metódu RedirectFromLoginPage automaticky generovať Tlačivá overovacím súborom cookie a presmerovať užívateľa na príslušnú stránku v prípade cmdLogin_ServerClick :
      Private Sub cmdLogin_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) _
         Handles cmdLogin.ServerClick
         If ValidateUser(txtUserName.Value,txtUserPass.value) Then
            FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, _
            chkPersistCookie.Checked)
         Else
            Response.Redirect("logon.aspx", True)
         End If
      End Sub
      						
    • Generovať overovania letenky, šifrovanie, vytvoriť cookie, pridať k odpovedi, a presmerovať užívateľa. To vám dáva viac ovládať ako vytvoríte súbor cookie. Môžete si tiež obsahovať vlastné údaje pozdĺž s FormsAuthenticationTicket v tomto prípade.
      Private Sub cmdLogin_ServerClick(ByVal sender As Object, _
         ByVal e As System.EventArgs) Handles cmdLogin.ServerClick
         If Validateuser(txtUserName.Value,txtUserPass.Value) Then
            Dim tkt As FormsAuthenticationTicket
            Dim cookiestr As String
            Dim ck As HttpCookie
      
            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) then ck.Expires=tkt.Expiration 
            ck.Path = FormsAuthentication.FormsCookiePath() 
            Response.Cookies.Add(ck)
      
            Dim strRedirect As String
            strRedirect = Request("ReturnURL")
            If strRedirect <> "" Then
               Response.Redirect(strRedirect, True)
            Else
               strRedirect = "default.aspx"
               Response.Redirect(strRedirect, True)
            End If
         Else
            Response.Redirect("logon.aspx", True)
         End If
      End Sub
      						

Vytvoriť Default.aspx stránku

Táto sekcia vytvorí skúšobnú stranu na ktorej používatelia budú presmerovaní po ich overení. Ak používatelia Prehľadávať túto stránku bez prvého prihlásenia k žiadosti, sú presmerovaní na prihlasovacej stránke.
  1. Premenovať existujúcu stranu WebForm1.aspx ako Default.aspx, a Otvorenie v editore.
  2. Prepnúť na zobrazenie HTML, a skopírujte nasledujúci kód medzi na<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. Prejdite do návrhového zobrazenia a uložiť stránku.
  4. Importovať požadované priestory názvov v súbore kód pozadu:
    Imports System.Web.Security
    					
  5. Otvorené kód-za stránky (Default.aspx.vb), a kópiu nasledujúci kód v popisovači udalosti cmdSignOut_ServerClick :
    Private Sub cmdSignOut_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles cmdSignOut.ServerClick
       FormsAuthentication.SignOut()
       Response.Redirect("logon.aspx", True)
    End Sub
    					
  6. Uložiť a zostaviť projekt. Teraz môžete používať aplikácie.

Riešenie problémov

  • Možno budete chcieť ukladať heslá bezpečne v databáze. Ste môžete použiť FormsAuthentication trieda utility funkcie vymenoval HashPasswordForStoringInConfigFile na šifrovanie hesiel, než si ich uložiť v databáze alebo konfiguračný súbor.
  • Ak chcete uložiť informácie o pripojení SQL v konfiguračný súbor (Web.config) tak, že si môžete ľahko upraviť, ak potrebné.
  • Môžete zvážiť pridanie kódu na prevenciu hackerov, ktorí sa snažia používať rôzne kombinácie hesiel z prihlásení. Napríklad, môžete zahŕňajú logiku, ktorá akceptuje len dva alebo tri pokusy o prihlásenie. Ak používateľ nemôže Prihláste sa určitý počet pokusov, možno budete chcieť nastaviť príznak Databáza nedovolí aby používateľ prihlásiť, kým používateľ opätovné zapnutie funkcie svojho účet tým, že navštívite inú stránku alebo na telefónnom čísle vašej linke. V Okrem toho, mali by ste pridať vhodné chyba manipulácia kdekoľvek potrebné.
  • Pretože používateľ je zistené na základe overovania cookie, možno budete chcieť používať Secure Sockets Layer (SSL) na túto aplikáciu tak že nikto môžete načítať overovacím súborom cookie a akékoľvek 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.
  • Časový parameter <authentication></authentication> konfigurácia Určuje interval, v ktorom overovací súbor cookie sa regeneruje. Môžete si vybrať hodnotu, ktorá poskytuje lepší výkon a zabezpečenie.
  • Určitých sprostredkovateľských proxy cache na internete môžu vyrovnávacej pamäte webového servera odpovede, ktoré obsahujú hlavičky súboru Cookie, ktoré sú potom sa vrátil k inému používateľovi. Pretože overovanie na základe formulárov používa cookie na overenie používateľov, môže to spôsobiť používateľom náhodou (alebo úmyselne) vydávať sa za iného používateľa príjem súboru cookie od sprostredkovateľa proxy alebo cache, ktoré bolo pôvodne určené pre nich.

Odkazy

Informácie o vykonávacích jednoduché na základe formulárov overovanie pomocou <credentials></credentials> časti Uložiť používateľov a heslá, pozri nasledujúci článok v ASP.NET QuickStart vzorky:
Overovanie na základe formulárov
http://QuickStarts.asp.net/QuickStartv20/aspnet/doc/Security/formsauth.aspx
Informácie o vykonávaní overovanie na základe formulárov pomocou súboru Extensible Markup Language (XML) na ukladanie používatelia a heslá, Pozrite si nasledujúce témy v .NET Framework Software Development Kit (SDK) dokumentácia:
Overovanie 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, pozri článok v .NET rámec SDK 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 , pozri nasledujúci článok v .NET rámec SDK dokumentácia:
http://msdn2.Microsoft.com/en-us/library/System.web.Security (vs.71) .aspx
Ďalšie informácie o ASP.NET konfigurácie, pozrite si Tieto články .NET rámec SDK:
ASP.NET konfigurácie
http://msdn2.Microsoft.com/en-us/library/aa719558 (VS.71) .aspx

ASP.NET konfigurácia sekcie
http://msdn2.Microsoft.com/en-us/library/w7w4sb0w (vs.71) .aspx
Informácie o ASP.NET bezpečnostné pokyny nájdete v nasledovných témach Bieleho papiera MSDN:
Overovanie v ASP.NET: .NET bezpečnostné pokyny
http://msdn2.Microsoft.com/en-us/library/ms978378.aspx
Ďalšie informácie nájdete v nasledujúcich knihách:
Esposito, Dino. Stavebné webové riešenia s ASP.NET a ADO.NET. Vydavateľstvo Microsoft Press, 2001.

Howard, Michael a David LeBlanc. Písanie Secure zákonníka. Vydavateľstvo Microsoft Press, 2001.

Vlastnosti

ID článku: 308157 - Posledná kontrola: 28. júna 2013 - Revízia: 3.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Kľúčové slová: 
kbproductlink kbconfig kbhowtomaster kbsecurity kbweb kbmt KB308157 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 308157

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