Şu anda çevrimdışısınız; İnternet'in yeniden bağlanması bekleniyor

Visual Basic .NET kullanarak ASP.NET uygulamanızın form tabanlı kimlik doğrulaması uygulamak nasıl

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 308157
Özet
Bu makalede, form tabanlı uygulama gösterilmektedir. Kullanıcılar depolamak için bir veritabanı kullanarak kimlik doğrulaması.

back to the top

Gereksinimler

Aşağıdaki listede önerilen donanım, yazılım önerilmektedir, ağ altyapısı ve gereken hizmet paketleri:
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server
  • Microsoft Internet Information Services (IIS) sürüm 5.0 veya sonraki bir sürümü
back to the top

Visual Basic .NET kullanarak bir ASP.NET uygulaması oluşturma

  1. Visual Studio .NET açın.
  2. Yeni bir ASP.NET Web uygulaması oluşturun ve adını belirtin ve konumu.
back to the top

Web.config dosyasında güvenlik ayarlarını yapılandırma

Bu bölüm eklemek ve değiştirmek nasıl gösterir <authentication></authentication> ve <authorization></authorization> ASP.NET uygulamasını yapılandırmak için yapılandırma bölümleri Form tabanlı kimlik doğrulamasını kullanın.
  1. Solution Explorer'da, Web.config dosyasını açın.
  2. Kimlik doğrulama modu formolarak değiştirin.
  3. <Forms>Etiket eklemek ve uygun doldurmak öznitelikler. (Bu öznitelikler hakkında daha fazla bilgi için MSDN'ye bakın belgelere veya listelenen QuickStart belgeleri </Forms>REFERANSLAR bölüm.) Kopyala aşağıdaki koda ve sonra kodu yapıştırmak için Düzen menüsünden HTML olarak Yapıştır ' ı tıklatın <authentication></authentication> dosyası bölümü:
    <authentication mode="Forms">	<forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" 	protection="All" path="/" timeout="30" /></authentication>					
  4. Anonim kullanıcı erişimini <authorization></authorization> bölümü aşağıdaki gibi:
    <authorization>	<deny users ="?" />	<allow users = "*" /></authorization>					
back to the top

Kullanıcılar ayrıntıyı depolayabilmek için örnek veritabanı tablosu oluşturma

Bu bölümde örnek veritabanına nasıl oluşturulduğu gösterilmektedir. Kullanıcı adı, parola ve kullanıcılar için rol depolar. Rol sütun gerekir Kullanıcı rolleri veritabanında depolamak ve uygulamak rol tabanlı isterseniz Güvenlik.
  1. Windows Başlat menüsünden Çalıştır' ı tıklatın ve sonra yazın Not defteri açmak için Not Defteri.
  2. Aşağıdaki SQL komut dosyası kodunu seçin, sağ tıklatın kod ve Kopyala' yı tıklatın. Not Defteri'nde, aşağıdaki kodu yapıştırmak için Düzen menüsünden Yapıştır ' ı tıklatın:
    if exists (select * from sysobjects where id = object_id(N'[dbo].[Users]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[Users]GOCREATE TABLE [dbo].[Users] (	[uname] [varchar] (15) NOT NULL ,	[Pwd] [varchar] (25) NOT NULL ,	[userRole] [varchar] (25) NOT NULL ,) ON [PRIMARY]GOALTER TABLE [dbo].[Users] WITH NOCHECK ADD 	CONSTRAINT [PK_Users] PRIMARY KEY  NONCLUSTERED 	(		[uname]	)  ON [PRIMARY] GOINSERT INTO Users values('user1','user1','Manager')INSERT INTO Users values('user2','user2','Admin')INSERT INTO Users values('user3','user3','User')GO					
  3. Dosyayı Users.sql kaydedin.
  4. Users.sql'de Microsoft SQL Server bilgisayarda açmak Sorgu Çözümleyicisi. Veritabanları listesinden pubstıklatın ve komut dosyasını çalıştırın. Bu örnek bir kullanıcı tablosu oluşturur ve Bu örnek ile kullanılmak üzere Pubs veritabanındaki tablo doldurur uygulama.
back to the top

Logon.aspx sayfa oluşturma

  1. Adlı projeye yeni bir Web formu ekleyin Logon.aspx.
  2. Logon.aspx sayfasına düzenleyicisinde açın ve HTML biçimine geçiş görüntüleyin.
  3. Aşağıdaki kodu kopyalayın ve arasında kod eklemek için Düzen menüsünden HTML olarak Yapıştır seçeneğini kullanın<form>etiketler: </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" />						
    Bu Web Form onlar böylece bir oturum açma formu sunmak için kullanılır. kullanıcı adlarını ve uygulamada oturum açmak için parola sağlayın.
  4. Tasarım görünümüne geçiş yapın ve sayfayı kaydedin.
back to the top

Kullanıcı kimlik bilgilerini doğrular, olay işleyicisini kod

Bu bölüm, arka plan kod içinde yerleştirilir kodu verir Sayfa (Logon.aspx.vb).
  1. Logon.aspx.vb dosyasını açın.
  2. Arka plan kod dosyasındaki gerekli isim uzaylarını içeri aktarın:
    Imports System.Data.SqlClientImports System.Web.Security					
  3. Bakarak kullanıcı kimlik bilgilerini doğrulamak için ValidateUser işlevi oluşturma Veritabanı. (İşaret etmek için bağlantı dizesi değiştirdiğinizden emin olun, Veritabanı.)
    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. Formları oluşturmak için iki yöntemden birini kullanabilirsiniz kimlik doğrulama tanımlama bilgisi ve yeniden yönlendirme kullanıcı için uygun bir sayfa cmdLogin_ServerClick olay. Her iki senaryo için örnek kod sağlanmıştır. Birini kullanın bunları gereksinimlerinize göre.
    • Formlar kimlik doğrulama tanımlama bilgisini otomatik olarak oluşturmak için RedirectFromLoginPage yöntemi çağırma ve kullanıcı cmdLogin_ServerClick olay uygun bir sayfaya yönlendirin:
      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 IfEnd Sub						
    • Kimlik doğrulama bileti oluşturur, şifrelemeden, oluşturma bir tanımlama bilgisi yanıtı ekleyin ve kullanıcıyı yeniden yönlendirmek. Bu size daha fazla bilgi sağlar tanımlama bilgisinin nasıl oluşturacağınızı de kontrol eder. Özel veri boyunca da dahil edebilirsiniz FormsAuthenticationTicket ile bu durumda.
      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 IfEnd Sub						
back to the top

Default.aspx sayfasını oluşturma

Bu bölümde, kullanıcıların yeniden yönlendirilen bir sınama sayfası oluşturur sonra da kimlik doğrulaması. Kullanıcı ilk oturum açma olmadan bu sayfasına göz atarsanız uygulama için bunlar oturum açma sayfasına yönlendirilir.
  1. Default.aspx olarak varolan WebForm1.aspx sayfasını yeniden adlandırma ve düzenleyicide açın.
  2. HTML görünümüne geçin ve arasında aşağıdaki kodu kopyalayın ,<form>etiketler: </form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">						
    Bu düğme, forms kimlik doğrulaması oturum için kullanılır oturum.
  3. Tasarım görünümüne geçiş yapın ve sayfayı kaydedin.
  4. Arka plan kod dosyasındaki gerekli isim uzaylarını içeri aktarın:
    Imports System.Web.Security					
  5. Açık arka plan kod sayfası (Default.aspx.vb) ve kopyalama cmdSignOut_ServerClick olay işleyicisine aşağıdaki kodu:
    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. Kaydet ve projeyi derleyin. Şimdi kullanabilirsiniz uygulama.
back to the top

Sorun giderme

  • Parolaları güvenli bir veritabanında depolamak isteyebilirsiniz. , FormsAuthentication sınıfı yardımcı program işlevi HashPasswordForStoringInConfigFile adlı veritabanına depolamadan önce parolaları şifrelemek için kullanabilirsiniz veya yapılandırma dosyası.
  • SQL bağlantı bilgilerini depolamak isteyebilirsiniz. yapılandırma dosyası (Web.config) böylece kolayca varsa değiştirebilirsiniz gerekli.
  • Deneyin korsanları engellemek üzere kod ekleyerek düşünün oturum açma farklı birleşimlerini parolalar kullanın. Örneğin, şunları yapabilirsiniz yalnızca iki veya üç oturum açma girişimlerini kabul eden bir mantığa sahiptir. Kullanıcı çalıştıramıyorsanız belirli sayıda girişim içinde oturum açma, bayrak kümesinde isteyebilirsiniz Bu kullanıcının kendi sağlayana kadar oturum açmak kullanıcının izin vermeyecek şekilde veritabanı Hesap, destek hattını arayarak veya farklı bir sayfa ziyaret tarafından. İçinde Ayrıca, uygun hata eklemeniz yerlerde işleme gerekli.
  • Kullanıcı kimlik doğrulamasına göre tanımlandığından tanımlama bilgisi, bu nedenle bu uygulama Güvenli Yuva Katmanı (SSL) kullanmak isteyebilirsiniz başka birinin kimlik doğrulama tanımlama bilgisi ve diğer bir değerli alabilirsiniz bilgi aktarılıyor.
  • Form tabanlı kimlik doğrulaması, istemci kabul etmenizi gerektiriyor veya kendi tarayıcı tanımlama bilgilerini etkinleştirin.
  • Zaman aşımı parametresi <authentication></authentication> yapılandırma bölümünde hangi aralıklarla denetler kimlik doğrulama tanımlama bilgisini yeniden oluşturulur. Sağlayan bir değer seçebilirsiniz. daha iyi performans ve güvenlik.
  • Belirli bir ara proxy'ler ve Internet'te önbellekleri olabilir Daha sonra Set-Cookie üstbilgileri içeren Web sunucu yanıtlarının önbelleğe farklı bir kullanıcıya döndürdü. Form tabanlı kimlik doğrulaması tanımlama bilgisi kullandığından kullanıcıların kimliğini doğrulamak için bu kullanıcıların yanlışlıkla (veya kasıtlı olarak) neden olabilir bir ara proxy sunucudan bir tanımlama bilgisi alarak başka bir kullanıcının kimliğine bürünmek veya onlar için ilk olarak amaçlanmamış önbelleği.
back to the top
Referanslar
Basit form tabanlı uygulama hakkında bilgi için kimlik doğrulaması kullanarak <credentials></credentials> bölümde kullanıcılar ve parolalar depolamak için aşağıdaki makaleye bakın ASP.NET QuickStart örnekleri: Form tabanlı kimlik doğrulaması uygulama hakkında bilgi için Kullanıcılar ve parolalar depolamak için bir Genişletilebilir Biçimlendirme Dili (XML) dosyası kullanarak, .NET Framework Software Development Kit (SDK) bulunan aşağıdaki konuya bakın belgeler:
Forms kimlik doğrulaması kullanıcıların XML dosyasını kullanma
http://msdn2.microsoft.com/en-us/library/1b1y85bh (vs.71) .aspx
ASP.NET Web uygulaması güvenliği hakkında daha fazla bilgi için bkz. .NET Framework SDK belgelerinde aşağıdaki makale: Aşağıdaki makalede .NET Framework SDK System.Web.Security ad alanı hakkında daha fazla bilgi için bkz: belgeler: ASP.NET Yapılandırması hakkında daha fazla bilgi için bkz. Aşağıdaki .NET Framework SDK makaleleri: ASP.NET güvenlik yönergeleri hakkında daha fazla bilgi için aşağıdakilere bakın MSDN Teknik İnceleme:
ASP.NET kimlik doğrulaması: .NET güvenlik kılavuzu
http://msdn2.microsoft.com/en-us/library/ms978378.aspx
Daha fazla bilgi için aşağıdaki kitaplara bakın:
Esposito, Dino. ASP.NET ve ADO.NET ile Web çözümler oluşturma. Microsoft Press, 2001.

Michael Howard ve David LeBlanc. Güvenli kod yazma. Microsoft Press, 2001.
back to the top
Forms kimlik doğrulaması

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 308157 - Son İnceleme: 06/28/2013 11:03:00 - Düzeltme: 9.0

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

  • kbproductlink kbconfig kbhowtomaster kbsecurity kbweb kbmt KB308157 KbMttr
Geri bildirim