Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Trình duyệt của bạn không được hỗ trợ

Bạn cần cập nhật trình duyệt của mình để sử dụng trang web.

Cập nhật lên Internet Explorer phiên bản mới nhất.

Làm thế nào để thực hiện dựa trên hình thức xác thực trong ứng dụng ASP.NET của bạn bằng cách sử dụng Visual Basic .NET

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 308157
Tóm tắt
Bài viết này chứng tỏ làm thế nào để thực hiện dựa trên hình thức xác thực bằng cách sử dụng bộ máy cơ sở dữ liệu để lưu trữ những người sử dụng.

back to the top

Yêu cầu

Danh sách sau đây tóm tắt các phần cứng được đề nghị, phần mềm, cơ sở hạ tầng mạng, và gói bản ghi dịch vụ mà bạn cần:
  • Microsoft Visual Studio Net
  • Microsoft SQL Server
  • Microsoft Internet Information Services (IIS) phiên bản 5.0 hoặc mới hơn
back to the top

Tạo ra một ứng dụng ASP.NET sử dụng Visual Basic .NET

  1. Mở hình ảnh Studio net.
  2. Tạo một ứng dụng ASP.NET Web mới, và xác định tên và vị trí.
back to the top

Đặt cấu hình các thiết đặt bảo mật trong các tập tin Web.config

Phần này chứng tỏ làm thế nào để thêm và sửa đổi các <authentication></authentication><authorization></authorization> cấu hình phần cấu hình ứng dụng ASP.NET sử dụng xác thực dựa trên hình thức.
  1. Trong giải pháp Explorer, mở tập tin Web.config.
  2. Thay đổi chế độ xác thực với hình thức.
  3. Chèn từ khóa <Forms>và điền vào thích hợp thuộc tính. (Để biết thêm chi tiết về các thuộc tính này, hãy tham khảo MSDN tài liệu hoặc tài liệu QuickStart được liệt kê trong các </Forms>TÀI LIỆU THAM KHẢO phần.) Sao chép các sau mã, và sau đó nhấp vào dán dưới dạng HTML trên menu chỉnh sửa để dán mã này trong các <authentication></authentication> của các tập tin:
    <authentication mode="Forms">	<forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" 	protection="All" path="/" timeout="30" /></authentication>					
  4. Từ chối truy cập cho người dùng vô danh trong các <authorization></authorization> phần như sau:
    <authorization>	<deny users ="?" />	<allow users = "*" /></authorization>					
back to the top

Tạo ra một bảng bộ máy cơ sở dữ liệu mẫu để lưu trữ thông tin chi tiết người dùng

Phần này chứng tỏ làm thế nào để tạo ra một bộ máy cơ sở dữ liệu mẫu để lưu trữ tên người dùng, mật khẩu và các vai trò cho người dùng. Bạn cần các cột vai trò Nếu bạn muốn để lưu trữ các vai trò người dùng trong bộ máy cơ sở dữ liệu và thực hiện dựa trên vai trò an ninh.
  1. Từ menu Windows Bắt đầu , bấm chạy, và sau đó gõ Notepad để mở Notepad.
  2. Làm nổi bật mã kịch bản SQL sau, bấm chuột phải vào các Mã, và sau đó nhấp vào sao chép. Trong Notepad, hãy nhấp vào dán trên menu chỉnh sửa để dán đoạn mã sau:
    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. Lưu tệp dưới dạng Users.sql.
  4. Trên máy tính của Microsoft SQL Server, mở Users.sql trong Phân tích truy vấn. Từ danh sách các bộ máy cơ sở dữ liệu, nhấp vào quán rượu, bật lên và chạy script. Điều này tạo ra một mẫu người sử dụng bảng và populates bảng trong bộ máy cơ sở dữ liệu quán rượu được sử dụng với mẫu này ứng dụng.
back to the top

Tạo một trang Logon.aspx

  1. Thêm một mẫu Web mới cho dự án được đặt tên Logon.aspx.
  2. Mở trang Logon.aspx trong trình soạn thảo, và chuyển sang HTML xem.
  3. Copy đoạn mã sau, và sử dụng các tùy chọn dán dưới dạng HTML trên menu chỉnh sửa để chèn mã giữa các<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" />						
    Biểu mẫu Web này được sử dụng để trình bày một hình thức kí nhập cho người dùng để họ có thể cung cấp tên người dùng và mật khẩu để kí nhập vào ứng dụng của họ.
  4. Chuyển sang thiết kế, và tiết kiệm các trang.
back to the top

Mã Bộ xử lí biến cố để nó xác nhận thông tin kí nhập người dùng

Phần này trình bày các mã được đặt trong mã đằng sau Trang (Logon.aspx.vb).
  1. Mở tập tin Logon.aspx.vb.
  2. Nhập khẩu các không gian tên yêu cầu trong các tập tin mã phía sau:
    Imports System.Data.SqlClientImports System.Web.Security					
  3. Tạo ra một chức năng ValidateUser để xác nhận thông tin kí nhập người dùng bằng cách xem các bộ máy cơ sở dữ liệu. (Hãy chắc chắn rằng bạn thay đổi chuỗi kết nối đến điểm đến của bạn bộ máy cơ sở dữ liệu.)
    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. Bạn có thể sử dụng một trong hai phương pháp để tạo ra các hình thức cookie xác thực và chuyển hướng người dùng đến một trang phù hợp trong sự kiện cmdLogin_ServerClick . Mẫu mã được cung cấp cho cả hai tình huống. Sử dụng một trong hai họ theo yêu cầu của bạn.
    • Gọi phương pháp RedirectFromLoginPage để tự động tạo ra cookie xác thực của các hình thức và chuyển hướng người dùng đến một trang thích hợp trong trường hợp 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 IfEnd Sub						
    • Tạo ra xác thực qua phiếu, mật mã hóa nó, tạo ra một cookie, thêm nó vào các phản ứng, và chuyển hướng người sử dụng. Điều này sẽ cho bạn nhiều hơn nữa kiểm soát trong làm thế nào bạn tạo ra các cookie. Bạn cũng có thể bao gồm các dữ liệu tuỳ chỉnh căn dọc với FormsAuthenticationTicket trong trường hợp này.
      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

Tạo một trang Default.aspx

Phần này tạo ra một trang thử nghiệm mà người dùng được chuyển hướng sau khi họ xác thực. Nếu người dùng duyệt đến trang này mà không cần đầu tiên kí nhập ứng dụng, họ được chuyển hướng đến trang kí nhập.
  1. Đổi tên trang WebForm1.aspx hiện tại như Default.aspx, và mở nó trong trình soạn thảo.
  2. Chuyển sang chế độ xem HTML, và sao chép đoạn mã sau giữa Các<form>Tags: </form>
    <input type="submit" Value="SignOut" runat="server" id="cmdSignOut">						
    nút chọn một này được sử dụng để kí nhập tắt hình thức xác thực Phiên làm việc.
  3. Chuyển sang thiết kế, và tiết kiệm các trang.
  4. Nhập khẩu các không gian tên yêu cầu trong các tập tin mã phía sau:
    Imports System.Web.Security					
  5. Mở mã đằng sau trang (Default.aspx.vb), và sao chép các sau khi mã trong Bộ xử lí biến cố 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. Tiết kiệm và biên dịch dự án. Bây giờ bạn có thể sử dụng các ứng dụng.
back to the top

Khắc phục sự cố

  • Bạn có thể muốn để lưu trữ mật khẩu an toàn trong một bộ máy cơ sở dữ liệu. Bạn có thể sử dụng chức năng tiện ích lớp FormsAuthentication được đặt tên là HashPasswordForStoringInConfigFile để mã hóa mật khẩu trước khi bạn lưu trữ chúng trong bộ máy cơ sở dữ liệu hoặc tập tin cấu hình.
  • Bạn có thể muốn để lưu trữ thông tin kết nối SQL trong các cấu hình tập tin (Web.config) để bạn có thể dễ dàng thay đổi nó nếu cần thiết.
  • Bạn có thể xem xét thêm mã để ngăn chặn tin tặc người cố gắng để sử dụng kết hợp khác nhau của mật khẩu từ kí nhập. Ví dụ, bạn có thể bao gồm logic mà chấp nhận chỉ có hai hoặc ba cố gắng kí nhập. Nếu người dùng không thể kí nhập vào trong một số nỗ lực, bạn có thể muốn đặt một lá cờ trong các bộ máy cơ sở dữ liệu để không cho phép người dùng để kí nhập vào cho đến khi người dùng đó re-enables mình tài khoản bằng cách truy cập một trang khác hoặc bằng cách gọi đường dây hỗ trợ của bạn. Ở Ngoài ra, bạn nên thêm thích hợp lỗi xử lý bất cứ nơi nào cần thiết.
  • Bởi vì người dùng được xác định dựa trên việc xác thực cookie, bạn có thể muốn sử dụng Tầng Khe Bảo mật (SSL) về ứng dụng này vì vậy rằng không có ai có thể lấy cookie xác thực và bất kỳ giá trị khác thông tin được truyền đi.
  • Xác thực dựa trên hình thức yêu cầu rằng khách hàng của bạn chấp nhận hoặc bật cookie trên trình duyệt của họ.
  • Các thông số thời gian chờ của các <authentication></authentication> cấu hình phần kiểm soát khoảng thời gian mà tại đó các cookie xác thực tái tạo. Bạn có thể chọn các giá trị cung cấp tốt hơn hiệu suất và bảo mật.
  • Một số proxy trung gian và lưu trữ trên Internet có thể bộ nhớ cache phản ứng Máy chủ Web có tiêu đề thiết lập Cookie, sau đó quay trở lại một người sử dụng khác nhau. Bởi vì sử dụng xác thực dựa trên hình thức một cookie xác thực người dùng, điều này có thể gây ra người dùng vô tình (hoặc cố ý) mạo danh người dùng khác bằng cách nhận được một cookie từ một proxy trung gian hoặc bộ nhớ cache không ban đầu dành cho họ.
back to the top
Tham khảo
Để biết thông tin về việc thực hiện đơn giản dựa trên hình thức xác thực bằng cách sử dụng các <credentials></credentials> phần để lưu trữ người dùng và mật khẩu, hãy xem bài viết sau đây trong mẫu ASP.NET QuickStart: Để biết thông tin về việc thực hiện xác thực dựa trên hình thức bởi bằng cách sử dụng một tập tin mở rộng đánh dấu kiểm ngôn ngữ (XML) để lưu trữ người dùng và mật khẩu, xem các chủ đề sau trong Khuôn khổ .NET phần mềm phát triển Kit (SDK) tài liệu:
Các hình thức xác thực bằng cách sử dụng một tập tin người sử dụng XML
http://msdn2.Microsoft.com/en-US/Library/1b1y85bh (vs.71) .aspx
Để biết thêm chi tiết về ASP.NET Web ứng dụng bảo mật, hãy xem Bài viết sau trong tài liệu Khuôn khổ .NET SDK: Để biết thêm chi tiết về không gian tên System.Web.Security , xem các bài viết sau đây trong Khuôn khổ .NET SDK tài liệu: Để biết thêm chi tiết về ASP.NET cấu hình, xem các Khuôn khổ .NET SDK bài viết sau đây: Cho thông tin về ASP.NET an ninh hướng dẫn, hãy xem mục sau Giấy trắng MSDN:
Xác thực trong ASP.NET: .NET an ninh hướng dẫn
http://msdn2.Microsoft.com/en-US/Library/ms978378.aspx
Để biết thêm chi tiết, xem các cuốn sách sau đây:
Esposito, khủng long. Xây dựng web site giải pháp với ASP.NET và ADO.NET. Microsoft Press, 2001.

Howard, Michael và David LeBlanc. Viết mã an toàn. Microsoft Press, 2001.
back to the top
Các hình thức xác thực

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 308157 - Xem lại Lần cuối: 06/28/2013 11:36:00 - Bản sửa đổi: 3.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 KbMtvi
Phản hồi