Một trong những khía cạnh quan trọng trong lập trình Web là khả năng xác định ngời dùng và điều khiển việc truy cập tài nguyên. Hoạt động để xác định yêu cầu này đợc gọi chứng thực quyền (authentication). Nói chung, ngời phải đa ra những điều kiện, nh tên/password để đợc chứng thực qyuền. Mỗi khi đợc chứng nhận, nó xác định nguồn tài nguyên đợc phép truy cập. Quá trình này đợc gọi là đ- ợc phép truy cập (authorization). ASP.NET liên kết với IIS để cung cấp dịch vụ chứng nhận thực quyền và đợc phép truy cập cho ứng dụng. Hai bớc này đợc đặt trong file cấu hình config.web
<configuration>
<system.web>
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" loginUrl="login.aspx" protection="All" timeout="60" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<globalization requestEncoding="UTF-8" responseEncoding="UTF- 8" />
</system.web>
</configuration>
Trong cấu hình trên, chúng ta chỉ định việc kiểm tra chứng thực thông qua cơ chế Form=”.ASPXUSERDEMO” là tên của Cookies dùng để kiểm trạ Loginurl chỉ
định tên trang để nhập vào thông tin thông tin về tài khoản. ở đây tất cả các tài nguyên và trang truy nhập không hợp lệ sẽ đợc chuyển hớng về trang login.aspx:
<%@ Import Namespace="System.Web.Security " %>
<html>
<script language="VB" runat=server>
Sub Login_Click(Src As Object, E As EventArgs) If UserEmail.Value = "jdoe@somewherẹcom" And UserPass.Value = "password"
FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookiẹChecked)
Else
Msg.Text = "Invalid Credentials: Please try again" End If
End Sub </script> <body>
<form runat=server>
<h3><font face="Verdana">Login Page</font></h3> <table>
<tr>
<td>Email:</td>
<td><input id="UserEmail" type="text" runat=server/></td>
<td><ASP:RequiredFieldValidator
ControlToValidate="UserEmail" Display="Static" ErrorMessage="*" runat=server/></td>
</tr> <tr>
<td>Password:</td>
<td><input id="UserPass" type=password runat=server/></td>
<td><ASP:RequiredFieldValidator
ControlToValidate="UserPass" Display="Static" ErrorMessage="*" runat=server/></td>
</tr> <tr>
<td>Persistent Cookie:</td>
<td><ASP:CheckBox id=PersistCookie runat="server" /> </td>
<td></td> </tr>
</table>
<asp:button text="Login" OnClick="Login_Click" runat=server/>
<p>
</form> </body>
</html>
Xây dựng một trang default.aspx
<%@ Import Namespace="System.Web.Security " %>
<html>
<script language="VB" runat=server>
Sub Page_Load(Src As Object, E As EventArgs) WelcomẹText = "Hello, " + User.IdentitỵName End Sub
Sub Signout_Click(Src As Object, E As EventArgs) FormsAuthentication.SignOut()
ResponsẹRedirect("login.aspx") End Sub
</script> <body>
<h3><font face="Verdana">Using Cookie Authentication</font></h3>
<form runat=server>
<h3><asp:label id="Welcome" runat=server/></h3> <asp:button text="Signout" OnClick="Signout_Click" runat=server/>
</form> </body> </html>
Bây giờ ta đặt cả 3 file trên vào trong một th mục của một ứng dụng Web. Tất cả ngời dùng vô danh đều không có quyền truy xuất trong trang tài nguyên
default.aspx và đợc chuyển đến trang login để nhập tên và mật khẩu đăng nhập. Nếu tài khoản hợp lệ ta sẽ xem đợc nội dung trang default.aspx.
Cấu hình trên chỉ áp dụng cho những tài nguyên ASP.NET ( đã đợc đăng ký với Aspnet_isapịdll). Cấu hình ASP.NET không cung cấp quyền chứng thực cho những tài nguyên không phải Aspnet_isapịdll, vì thế những file TXT, HTML, GIF, JPEG, ASP, và các loại file khác vẫn có thể đợc truy cập cho tất cả ngời dùng có quyền của IIS. Ta có thể sử dụng thẻ <location> </location> để xác định một file hay một th mục cần áp dụng cấu hình nàỵ
Ngoài kiểu bảo mật trên ASP.NET còn cho phép bảo mật theo kiểu Passport, một dịch vụ chứng thực của Microsoft.
Phần III: Xây dựng một ứng dụng với ASP.NET