How To Implement c #.net kullanarak asp.net uygulamanızın form tabanlı kimlik doğrulaması

Makale çevirileri Makale çevirileri
Makale numarası: 301240 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, form tabanlı nasıl gösterilmektedir. Kullanıcıların depolamak için bir veritabanı kullanarak kimlik doğrulaması.

Gereksinimleri

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

C# .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.

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

Bu bölüm eklemek ve değiştirmek nasıl kullanıldığı gösterilmektedir <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. Çözüm Gezgini'nde Web.config dosyasını açın.
  2. Formskimlik doğrulaması modunu 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>BAŞVURULAR bölüm.) Kopyala Aşağıdaki kod, tıklayın ve sonra html olarak Yapıştır üzerindeDüzenle Menü kodu yapıştırmak için <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ünde aşağıdaki gibi:
    <authorization>
       <deny users ="?" />
       <allow users = "*" />
    </authorization>
    					

Mağaza kullanıcılar ayrıntıları için örnek veritabanı tablosu oluşturma

Bu bölümde bir sample veritabanı oluşturulması gösterilmiştir Kullanıcı adı, parola ve kullanıcılar için rol depolar. Rol sütun gerekir Rol tabanlı kullanıcı rolleri veritabanında depolamak ve uygulamak istiyorsanız Güvenlik.
  1. Üzerinde Başlat menüsünde,'ı tıklatınÇalıştırve 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'ı tıklatın Kopyala. Not Defteri'nde,'ı tıklatın.Yapıştır üzerinde Düzenle Menü aşağıdaki yapıştırmak için kod:
    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. Dosyayı Users.sql kaydedin.
  4. Users.sql, Microsoft sql Server bilgisayarda açma Query Analyzer'ı. Veritabanları listesinden tıklatın pubs, ve komut dosyasını çalıştırın. Bu örnek bir kullanıcı tablosu oluşturur ve tabloda doldurur Bu örnek uygulama ile kullanılmak üzere Pubs veritabanı.

Logon.aspx sayfa oluşturma

  1. Adlı projeye yeni bir Web formu ekleyin Logon.aspx.
  2. Logon.aspx sayfasına düzenleyicide açabilir ve html biçimine geçiş görüntüleyin.
  3. Aşağıdaki kodu kopyalayın ve kullanma Olarak Yapıştır HTML Temel seçeneği Düzenle kod eklemek için menü arasında<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, böylece bir oturum açma formu kullanıcılara 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.

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

Bu bölüm arka planda yerleştirilen kod sunar. Sayfa (Logon.aspx.cs).
  1. Çift tıklatın Oturum açma açmak için Logon.aspx.cs dosyası.
  2. Arka plan kod dosyasındaki gerekli isim uzaylarını içeri aktarın:
    using System.Data.SqlClient;
    using System.Web.Security;
    					
  3. Bakarak kullanıcı kimlik bilgilerini doğrulamak için ValidateUser işlevi oluşturma Veritabanı. (Bağlantı dizesi işaret edecek şekilde değiştirdiğinizden emin olun, Veritabanı).
    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. Formları oluşturmak için iki yöntemden birini kullanabilirsiniz kimlik doğrulama tanımlama bilgisi ve yönlendirme kullanıcıya 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 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);
      }
      						
    • 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 nasıl bir tanımlama bilgisi yaratır kontrol eder. Özel veri boyunca de ekleyebilirsiniz FormsAuthenticationTicket ile bu durumda.
      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. Web Form Tasarımcısı oluşturur kodu InitializeComponent yöntemine aşağıdaki kodu eklendiğinden emin olun:
    this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);
    					

Default.aspx sayfasını oluşturma

Bu bölümde, kullanıcıların yeniden yönlendirilen bir sınama sayfası oluşturur sonra kimlik doğrulaması. Kullanıcı ilk oturum açma olmadan bu sayfaya göz atarsanız uygulama için oturum açma sayfasına yönlendirilir.
  1. WebForm1.aspx sayfasının varolan Default.aspx, olarak yeniden adlandırın ve düzenleyicide açın.
  2. html görünümüne geçin ve aşağıdaki kodu arasında kopyalama ,<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:
    using System.Web.Security;
    					
  5. SignOut açık arka plan kod sayfası (Default.aspx.cs) ve kopya için çift tıklatın. cmdSignOut_ServerClick olay işleyicisine aşağıdaki kodu:
    private void cmdSignOut_ServerClick(object sender, System.EventArgs e)
    {
       FormsAuthentication.SignOut();
       Response.Redirect("logon.aspx", true);
    }
    					
  6. Web Form Tasarımcısı oluşturur kodu InitializeComponent yöntemine aşağıdaki kodu eklendiğinden emin olun:
    this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);
    					
  7. Kaydet ve projeyi derleyin. Şimdi kullanabilirsiniz uygulama.

Ek Notlar

  • Parolaları güvenli bir veritabanında depolamak isteyebilirsiniz. Size 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.
  • Çalıştığınızda bilgisayar 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. Kullanamaz belirli sayıda girişim içinde oturum açma, istediğiniz bir bayrak ayarlayın Bu kullanıcının kendi sağlayana kadar oturum açmak kullanıcının izin vermeyecek şekilde veritabanı Hesap bilgilerinizi destek hattını arayarak veya farklı bir sayfa ziyaret. İçinde Buna ek olarak, uygun hata eklemeniz yerlerde işleme gerekli.
  • Kullanıcı kimlik doğrulamasına göre tanımlanır çünkü tanımlama bilgisi, bu nedenle bu uygulama Güvenli Yuva Katmanı (ssl) kullanmak isteyebilirsiniz kimlik doğrulama tanımlama bilgisi ve herhangi bir diğer değerli biri deceive bilgiler aktarılıyor.
  • Form tabanlı kimlik doğrulaması, istemci bilgisayarlarınızın 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 Ara proxy'ler ve Internet'teki önbellekleri olabilir Daha sonra Set-Cookie başlıkları içeren Web sunucu yanıtlarının önbelleğe almak başka bir kullanıcı tarafından 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.

Referanslar

Basit uygulamak hakkında daha fazla bilgi için kullanan form tabanlı kimlik doğrulamasını <credentials></credentials> bölümüne başvurmak için aşağıdaki kullanıcılar ve parolalar depolamak için GotDotNet asp.net QuickStart örneği:
Form tabanlı kimlik doğrulaması
http://quickstarts.ASP.NET/QuickStartv20/ASPNET/doc/Security/formsauth.aspx
Form tabanlı uygulamak hakkında daha fazla bilgi için Kullanıcılar ve parolalar, depolamak için bir xml dosyası kullanan kimlik doğrulama başvurmak için Aşağıdaki konuda .NET Framework Yazılım Geliştirme Seti (sdk) içinde 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 aşağıdaki Microsoft .NET Framework Geliştirici Kılavuzu'na bakın. belgeler:
asp.net Web uygulaması güvenliği
http://msdn2.microsoft.com/en-us/library/330a99hc (vs.71) .aspx
System.Web.Security ad alanı hakkında daha fazla bilgi için aşağıdaki Microsoft .NET Framework için başvurun Başvuru belgesi:
System.Web.Security ad alanı
http://msdn2.microsoft.com/en-us/library/System.Web.Security (vs.71) .aspx
asp.net yapılandırma hakkında daha fazla bilgi için bakın aşağıdaki Microsoft .NET Framework Geliştirici Kılavuzu makaleleri:
asp.net Yapılandırması
http://msdn2.microsoft.com/en-us/library/aa719558 (vs.71) .aspx

asp.net yapılandırma bölümleri
http://msdn2.microsoft.com/en-us/library/w7w4sb0w (vs.71) .aspx
asp.net güvenliği hakkında daha fazla bilgi için bakın aşağıdaki msdn Teknik İnceleme:
ASP: .NET güvenlik kılavuzu
http://msdn2.microsoft.com/en-us/library/ms978378.aspx

Özellikler

Makale numarası: 301240 - Last Review: 15 Kasım 2012 Perşembe - Gözden geçirme: 1.0
Bu makaledeki bilginin uygulandığı durum:
  • 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
Anahtar Kelimeler: 
kbconfig kbhowtomaster kbsecurity kbweb kbmt KB301240 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 301240

Geri Bildirim Ver

 

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