Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Browser Anda tidak didukung

Anda perlu memperbarui browser untuk menggunakan situs ini.

Perbarui versi terbaru dari Internet Explorer

Bagaimana menerapkan otentikasi berbasis bentuk di ASP.NET aplikasi Anda dengan menggunakan C #.NET

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini: 301240
Ringkasan
Artikel ini menunjukkan bagaimana untuk mengimplementasikan forms-based otentikasi dengan menggunakan database untuk menyimpan pengguna.

back to the top

Persyaratan

Daftar berikut menguraikan fitur peranti penangkap keras, peranti penangkap lunak, infrastruktur jaringan, dan Service Pack yang Anda butuhkan:
  • Microsoft Visual Studio .NET
  • Layanan Informasi Internet Microsoft (IIS) versi 5.0 atau kemudian
  • Microsoft SQL Server
back to the top

Membuat aplikasi ASP.NET menggunakan C# .NET

  1. Membuka Visual Studio .NET.
  2. Membuat aplikasi ASP.NET Web baru, dan Tentukan nama dan lokasi.
back to the top

Mengkonfigurasi pengaturan keamanan dalam berkas Web.config

Bagian ini menunjukkan cara menambah dan mengubah <authentication></authentication> dan <authorization></authorization> bagian konfigurasi untuk mengkonfigurasi aplikasi ASP.NET menggunakan otentikasi berbasis bentuk.
  1. Pada solusi Explorer, buka berkas Web.config.
  2. Mengubah modus otentikasi ke bentuk.
  3. Masukkan <Forms>tag, dan isi yang sesuai atribut. (Untuk informasi lebih lanjut tentang atribut ini, lihat MSDN dokumentasi atau dokumentasi QuickStart yang tercantum dalam </Forms>REFERENSI Bagian.) kopi karbon kode berikut, dan kemudian klik Paste HTML padaEdit Menu untuk menyisipkan kode di <authentication></authentication> dari berkas:
    <authentication mode="Forms">   <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx"    protection="All" path="/" timeout="30" /></authentication> 					
  4. Menolak akses ke pengguna anonim di <authorization></authorization> bagian sebagai berikut:
    <authorization>   <deny users ="?" />   <allow users = "*" /></authorization>					
back to the top

Membuat Daftar Tabel Database contoh untuk rincian penyimpanan pengguna

Bagian ini menunjukkan bagaimana untuk membuat database contoh untuk menyimpan Nama pengguna, sandi, dan peran bagi pengguna. Anda perlu kolom peran Jika Anda ingin menyimpan peran pengguna dalam database dan menerapkan berbasis peran keamanan.
  1. Pada Mulai Menu, klikMenjalankan, kemudian ketik Notepad untuk membuka Notepad.
  2. Menyorot kode skrip SQL berikut, klik kanan-atas kode, dan kemudian klik kopi karbon. Dalam Notepad, klikPasta pada Edit Menu untuk paste berikut kode:
    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. Simpan file sebagai Users.sql.
  4. Pada komputer Microsoft SQL Server, buka Users.sql di Query Analyzer. Dari daftar database, klik pub, dan menjalankan script. Ini menciptakan Daftar Tabel pengguna contoh dan populates Daftar Tabel di Pub database untuk digunakan dengan aplikasi sampel ini.
back to the top

Buat Halaman log masuk.aspx

  1. Tambahkan formulir Web baru untuk proyek yang dinamai log masuk.aspx.
  2. Membuka halaman log masuk.aspx di editor, dan beralih ke HTML Lihat.
  3. Salin kode berikut, dan menggunakan Pasta sebagai HTML opsi pada Edit Menu untuk memasukkan kode antara<form>Tags: </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" />						
    Formulir Web ini digunakan untuk mempresentasikan bentuk log-masuk untuk pengguna sehingga mereka dapat memberikan Nama pengguna dan sandi untuk log-masuk ke aplikasi.
  4. Beralih ke tampilan Desain, dan menyimpan halaman.
back to the top

Kode Pengangan kejadian sehingga memvalidasi kredensial pengguna

Menyampaikan kode yang ditempatkan di belakang kode Halaman (Logon.aspx.cs).
  1. klik ganda Log-masuk untuk membuka Berkas log masuk.aspx.cs.
  2. Impor namespaces diperlukan dalam kode-file di belakang:
    using System.Data.SqlClient;using System.Web.Security;					
  3. Membuat ValidateUser fungsi untuk memvalidasi kredensial pengguna dengan melihat database. (Pastikan bahwa Anda mengubah koneksi string untuk menunjuk ke Anda database).
    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. Anda dapat menggunakan salah satu dari dua metode untuk menghasilkan bentuk cookie otentikasi dan redirect pengguna ke halaman yang sesuai dalam acara cmdLogin_ServerClick . Contoh kode yang diberikan untuk kedua skenario. Menggunakan salah satu mereka kebutuhan Anda.
    • Memanggil metode RedirectFromLoginPage untuk secara otomatis menghasilkan bentuk otentikasi cookie dan mengarahkan ulang pengguna ke halaman yang sesuai dalam acara cmdLogin_ServerClick :
      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);}						
    • Menghasilkan otentikasi tiket, mengenkripsinya, membuat cookie, menambahkannya ke respon, dan mengarahkan ulang pengguna. Ini memberi Anda lebih banyak kontrol di bagaimana Anda membuat cookie. Anda dapat juga menyertakan data kustom sepanjang dengan FormsAuthenticationTicket dalam kasus ini.
      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. Pastikan bahwa kode berikut ditambahkan ke InitializeComponent metode dalam kode yang menghasilkan desain formulir Web:
    this.cmdLogin.ServerClick += new System.EventHandler(this.cmdLogin_ServerClick);					
back to the top

Buat Halaman Default.aspx

Bagian ini menciptakan halaman pengujian yang mengarahkan pengguna setelah mereka melakukan otentikasi. Jika pengguna telusuri paling detail Halaman ini tanpa log masuk pertama untuk aplikasi, mereka diarahkan ke halaman log masuk.
  1. Mengubah nama halaman yang ada WebForm1.aspx sebagai Default.aspx, dan membukanya dalam editor.
  2. Beralih ke tampilan HTML, dan salin kode berikut antara The<form>Tags: </form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">						
    tombol tekan ini digunakan untuk log-keluar bentuk-bentuk otentikasi sesi.
  3. Beralih ke tampilan Desain, dan menyimpan halaman.
  4. Impor namespaces diperlukan dalam kode-file di belakang:
    using System.Web.Security;					
  5. klik ganda SignOut ke halaman terbuka di belakang kode (BT_GetFeeds), dan kopi karbon kode berikut di cmdSignOut_ServerClick event handler:
    private void cmdSignOut_ServerClick(object sender, System.EventArgs e){   FormsAuthentication.SignOut();   Response.Redirect("logon.aspx", true);}					
  6. Pastikan bahwa kode berikut ditambahkan ke InitializeComponent metode dalam kode yang menghasilkan desain formulir Web:
    this.cmdSignOut.ServerClick += new System.EventHandler(this.cmdSignOut_ServerClick);					
  7. Simpan dan mengkompilasi proyek. Anda sekarang dapat menggunakan aplikasi.
back to the top

Catatan tambahan

  • Anda mungkin ingin menyimpan sandi aman dalam database. Anda dapat menggunakan fungsi utilitas kelas FormsAuthentication yang bernama HashPasswordForStoringInConfigFile untuk mengenkripsi sandi sebelum Anda menyimpannya dalam database atau file konfigurasi.
  • Anda mungkin ingin menyimpan informasi koneksi SQL dalam file konfigurasi (Web.config) sehingga Anda dapat dengan mudah memodifikasi jika diperlukan.
  • Anda dapat mempertimbangkan menambahkan kode untuk mencegah hacker yang mencoba untuk menggunakan berbagai kombinasi password dari log on. Misalnya, Anda dapat termasuk logika yang menerima hanya dua atau tiga usaha log masuk. Jika pengguna tidak dapat log-masuk dalam jumlah tertentu upaya, Anda mungkin ingin mengatur bendera database untuk memungkinkan pengguna untuk log-masuk hingga pengguna re-enables dirinya account dengan mengunjungi halaman yang berbeda atau dengan menelepon baris dukungan Anda. Dalam Selain itu, Anda harus menambahkan sesuai kesalahan penanganan dimanapun diperlukan.
  • Karena pengguna diidentifikasi berdasarkan otentikasi cookie, Anda mungkin ingin menggunakan Secure Sockets Layer (SSL) pada aplikasi ini jadi tidak seorang pun bisa menipu cookie otentikasi dan berharga lain informasi yang ditransmisikan.
  • Otentikasi berbasis bentuk memerlukan bahwa klien Anda menerima atau mengaktifkan cookies pada browser mereka.
  • Timeout parameter <authentication></authentication> bagian konfigurasi kontrol interval di mana cookie otentikasi dibuat ulang. Anda dapat memilih nilai yang menyediakan lebih baik kinerja dan keamanan.
  • Perantara proxy dan cache pada Internet tertentu mungkin cache server Web tanggapan yang berisi header Set-Cookie, yang kemudian kembali ke pengguna lain. Karena menggunakan bentuk-bentuk otentikasi berbasis cookie mengotentikasi pengguna, ini dapat menyebabkan pengguna untuk sengaja (atau sengaja) menyamar sebagai pengguna lain dengan menerima cookie dari proxy perantara atau cache yang awalnya tidak dimaksudkan untuk mereka.
back to the top
Referensi
Untuk selengkapnya tentang cara menerapkan sederhana otentikasi berbasis bentuk yang menggunakan <credentials></credentials> bagian untuk menyimpan pengguna dan sandi, lihat berikut GotDotNet ASP.NET QuickStart contoh: Untuk selengkapnya tentang cara menerapkan berbasis bentuk otentikasi yang menggunakan XML file untuk menyimpan pengguna dan password, merujuk kepada Berikut topik di .NET Framework Software Development Kit (SDK) Dokumentasi:
Bentuk-bentuk otentikasi menggunakan File XML pengguna
.aspx http://msdn2.Microsoft.com/en-US/Library/1b1y85bh (vs.71)
Untuk informasi lebih lanjut tentang keamanan aplikasi ASP.NET Web, merujuk ke panduan berikut Microsoft .NET Framework pengembang Dokumentasi: Untuk informasi lebih lanjut tentang System.Web.Security namespace, lihat berikut Microsoft .NET Framework Dokumentasi referensi: Untuk informasi lebih lanjut tentang ASP.NET konfigurasi, lihat Artikel panduan berikut Microsoft .NET Framework pengembang: Untuk informasi tentang pedoman keamanan ASP.NET, merujuk kepada kertas putih MSDN berikut:
Otentikasi di ASP.NET: bimbingan keamanan .NET
http://msdn2.Microsoft.com/en-US/Library/ms978378.aspx
back to the top

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 301240 - Tinjauan Terakhir: 11/15/2012 03:04:00 - Revisi: 3.0

  • 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
  • kbconfig kbhowtomaster kbsecurity kbweb kbmt KB301240 KbMtid
Tanggapan
utoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("