Sử dụng Profiles

Một phần của tài liệu Giáo trình ASP.NET cơ bản doc (Trang 165)

ASP.NET Framework cung cấp cho bạn một thay thế cho Session hay cookie để lưu trữ thông tin của người sử dụng đó là đối tượng Profile

Bạn tạo một Profile bằng cách định nghĩa một danh sách các thuộc tính Profile trong ứng dụng ờ file web.config trong thư mục root. ASP.NET Framework tự động biên dịch một lớp chứa đựng các thuộc tính này.

Ví dụ sau đây sẽ đưa ra một Profile với ba thuộc tính: firstName, lastName và NumberOfVisits: Trang web.config <?xmlversion="1.0"?> <configuration> <system.web> <profile> <properties>

<addname="firstName" /> <addname="lastName"/>

<addname="NumberOfVisits"type="Int32"defaultValue="0"/> </properties>

</profile> </system.web> </configuration>

 Name: chỉ định tên của thuộc tính.

 Type: cho phép chỉ định kiểu dữ liệu của thuộc tính

 Defaultvalue: cho phép chỉ định giá trị mặc định của thuộc tính

 ReadOnly: cho phép tạo thuộc tính chỉ đọc

 serializeAs: Enables you to specify how a property is persisted into a static repre-

 sentation. Possible values are Binary, ProviderSpecific, String, and Xml.

 allowAnonnyMous: cho phép người sử dụng nặc danh đọc và thiết lập thuộc tính

 Provider: Cho phép bạn kết hợp thuộc tính với một Profile Provider riêng biêt.

 customeProviderData:Enables you to pass custom data to a Profile provider.

Sau khi định nghĩa một Profile trong web.config, bạn có thể sử dụng đối tượng Provider để chỉnh sửa các thuộc tính Profile. Như ví dụ sau đây bạn sẽ chỉnh sửa hai thuộc tính firstName và lastName trên Form, hơn thế nữa chúng ta sẽ thấy mỗi lần trang web được load lại thì giá trị của NumberOfVisit sẽ tăng lên một.

Ví dụ: trang showProfile.aspx

<%@ PageLanguage="C#" AutoEventWireup="true"CodeFile="showProfile.aspx.cs"

Inherits="showProfile" %>

<script runat="server">

void Page_PreRender() { firstName.Text = Profile.firstName; lastName.Text = Profile.lastName; Profile.NumberOfVisits++; numbervisit.Text = Profile.NumberOfVisits.ToString(); }

protected void btnUpdate_Click(object sender, EventArgs e) {

Profile.firstName = txtFirstName.Text; Profile.lastName = txtLastName.Text; }

</script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

<title>show Profile</title> </head>

<body>

<formid="form1"runat="server">

<div>

FirstName: <asp:LabelID="firstName"runat="server"/><br/>

LastName: <asp:LabelID="lastName" runat="server"/><br/>

Number of Visit: <asp:Label ID="numbervisit"runat="server"/><hr/>

<asp:LabelID="lblfistname"runat="server"Text="FirstName:"/>

<asp:TextBox ID="txtFirstName"runat="server"/><br/>

<asp:LabelID="lbllastName"runat="server"Text="LastName:"/>

<asp:ButtonID="btnUpdate"Text="Update" runat="server" OnClick="btnUpdate_Click" /> </div> </form> </body> </html>

Và kết xuất của chương trình như sau:

Chú ý rằng thuộc tính của Profile được trình bày với kiểu dữ liệu đã quy định trong thuộc tính type mà ta định nghĩa trong Profile.

Một thuộc tính quan trọng của Profile nó là nó có khả năng giữ lại giá trị của thuộc tính khi người sử dụng rời khỏi trang web, ví dụ nếu bạn gán thuộc tính Profile cho một người sử dụng, người sử dụng đó không quay lại website trong 500 năm thì giá trị đó vẫn được giữ lại cho người sử dụng.

Đối tượng Profile sử dụng models Provider. mặc định Profile Provider là SqlProfileProvider, Mặc định Provider lưu trữ dữ liệu Profile trong cơ sở dữ liệu MS SQL Server 2005 Express được đặt tên là ASPNETDB.mdf, được định vị trong thư mục App_Data. Nếu cơ sở dữ liệu không tồn tại thì nó sẽ được tạo tự động khi chạy chương trình có sử dụng Profile.

MẶc định bạn không thể lưu trữ thông tin Profile cho một người sử dụng nặc danh. ASP.NET Framework tính đồng nhất authenticate của bạn kết hợp với thông tin Profile, bạn có thể sử dụng đối tượng Profile với các kiểu chuẩn mà authentication hỗ trợ bởi ASP.NET Framework, bao gồm cả hai kiểm chứng Forms và Windows

Creating Profile Groups

Nếu bạn cần định nghĩa nhiều thuộc tính của Profile, bạn có thể tạo các thuộc tính bằng quản lý bởi việc tổ chức các thuộc tính trong Groups. Ví dụ trong file web.config sau định nghĩa hai nhóm thuộc tính Preferences và ContactInfo.

Ví dụ Trang web.config <?xmlversion="1.0"?> <configuration> <system.web> <profile> <properties>

<groupname="Preferences">

<addname="BackColor"defaultValue="lightblue"/> <addname="font"defaultValue="Arial"/>

</group>

<groupname="ContactInfo">

<addname="Email"defaultValue="hung.le.uh@TonghopIT.com.vn"/> <addname="phone"defaultValue="0936302728"/>

</group> </properties>

</profile> </system.web> </configuration>

Ví dụ sau đây sẽ hướng dẫn bạn cách tạo

<%@ PageLanguage="C#" AutoEventWireup="true"CodeFile="showProfilegoups.aspx.cs"

Inherits="showProfilegoups" %>

<%@ ImportNamespace="System.Drawing" %>

<script runat="server">

protected void Page_Load() {

lblEmail.Text = Profile.ContactInfo.Email; lblPhone.Text = Profile.ContactInfo.phone; Style pagestyle = newStyle();

pagestyle.BackColor = ColorTranslator.FromHtml(Profile.Preferences.BackColor); pagestyle.Font.Name = Profile.Preferences.font;

Header.StyleSheet.CreateStyleRule(pagestyle, null,"html"); }

</script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

<title>show profile group</title> </head>

<body>

<formid="form1"runat="server">

<div>

Email: <asp:LabelID="lblEmail"runat="server"/><br/>

Phone: <asp:LabelID="lblPhone"runat="server"/>

</div>

</form> </body> </html>

Hỗ trợ người sử dụng nặc danh

Mặc định người sử dụng nặc danh không thể chỉnh sửa các thuộc tính của Profile, vấn đề là ASPNET Framework không có phương thức kết hợp dữ liệu Profile với người sử dụng riêng biêt trừ khi người sử dụng được kiểm chứng.

Nếu bạn muốn cho phép người sử dụng nặc danh chỉnh sửa các thuộc tính Profile, bạn có phải cho phép đặc tính của ASP.NET Framework được gọi là định danh nặc danh. Khi định danh nặc danh được cho phép, khi định danh duy nhất được gán đến người sử dụng nặc danh và được lưu trữ trong trình duyệt cookie ổn định.

Hơn thế nữa, bạn phải đánh dấu tất cả các thuộc tính Profile mà bạn muốn cho phép người sử dụng nặc danh với các đặc tính cho phép nặc danh. Ví dụ trang web.config sau cho phép định danh nặc danh và định nghĩa một thuộc tính Profile mà có thể chỉnh sửa được bởi người sử dụng nặc danh.

<?xmlversion="1.0"?> <configuration>

<authenticationmode="Windows" /> <anonymousIdentificationenabled="true"/> <profile>

<properties>

<addname="NumberOfVisits"type="Int32"defaultValue="0" allowAnonymous="true"/>

</properties> </profile> </system.web> </configuration>

thuộc tính NumberOfVisits bao gồm thuộc tính allowAnonymous. Chú ý rằng file web.config và chỉ cho phép Form Authencation. Khi Form Authentication được cho phép và bạn không login, và khi đó bạn là người sử dụng nặc danh.

Trong ví dụ sau sẽ hướng dẫn cách bạn sửa thuộc tính định danh khi định danh nặc danh được cho phép.

Trang ShowAnonymousIdentification.aspx; <%@Page Language="C#"AutoEventWireup="true"

CodeFile="ShowAnonymousIdentification.aspx.cs"Inherits="ShowAnonymousIdentification"

%>

<scriptrunat="server">

void Page_PreRender() { lblName.Text = Profile.UserName; lblanonymous.Text = Profile.IsAnonymous.ToString(); Profile.NumberOfVisits++; lblnumbetofanonymous.Text = Profile.NumberOfVisits.ToString(); }

protectedvoid btnLogin_Click(object sender, EventArgs e) {

FormsAuthentication.SetAuthCookie("Bob", false); Response.Redirect(Request.Path);

}

protectedvoid btnLogout_Click(object sender, EventArgs e) {

FormsAuthentication.SignOut(); Response.Redirect(Request.Path); }

</script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

<title>Show Anonymous Identification</title> </head>

<body>

<formid="form1"runat="server">

UseName: <asp:LabelID="lblName"runat="server"/><br />

Is Anonymous: <asp:Label ID="lblanonymous"runat="server" />

Number of Visits: <asp:LabelID="lblnumbetofanonymous"runat="server"/><br/><hr

/>

<asp:ButtonID="btnReload"Text="Reload"runat="server"/>

<asp:ButtonID="btnLogin" Text="Login" OnClick="btnLogin_Click"runat="server"/>

<asp:ButtonID="btnLogout"Text="Logout"OnClick="btnLogout_Click"runat="server" />

</div>

</form> </body> </html>

Chương 15. Cấu hình và Triển khai ứng dụng 15.1 Cấu hình ứng dụng

Trong chương này bạn sẽ học cách cấu hình các ứng dụng ASP.NET của mình.

15.1.1 Tổng quan về cấu hình website

ASP.NET sử dụng một hệ thống phân cấp của cấu hình, ở phần đầu của hệ phân cấp này là tệp Machine.config. File này chứa các cấu hình mặc định cho các ứng dụng ASP.NET và tất cả các kiểu ứng dụng khác nhau được xây dựng trên NETFramework.

File Machine.config được định vị theo đường dẫn

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.config. Trong thu mục CONFIG bao gồm 6 file

 Machine.config: Chứa đựng các cấu hình

 Machine.config.default: Chứa đựng các giá trị mặc định cho tất cả các thiết lập cấu hình

 Machine.config.comments: Chứa đựng các ghi chú trên mỗi thiết đặt cấu hình.

 Web.config: Chứa đựng các thiết đặt cấu hình

 Web.config.default: Chứa đựng các giá trị mặc định cho tất cả các thiết lập cấu hình

 Web.config.comments: Chứa đựng cád ghi chú trên mỗi thiết đặt cấu hinh.

Chỉ hai file web.config, machine.config được sử dụng để thiết lập cấu hình, các file khác được sử dụng với mục đích như tài liệu hỗ trợ

Bạn có thể đặt một file web.config trong thư mục gốc của ứng dụng wwwroot sẽ có tác dụng cấu hình cho tất cả các ứng dụng

File web.config đặt trong thư mục gốc của từng ứng dụng cụ thể, nó có tác dụng trong phạm vi của ứng dụng đó.

File web.config đặt trong một thư mục con nó có tác dụng cấu hình cho tất cả các trang trong thư mục đó và trong các thư mục con của nó.

Khi ứng dụng ASP.NET khởi động, hệ thống phân cấp của các file cấu hình được kết hợp và được lưu trữ trong bộ nhớ, một file phụ thuộc được tạo ra giữa thiết lập lưu trữ cấu hình và file hệ thống. Nếu bạn thay đổi file cấu hình một thiết lập cấu hình mới được tải lại tự động trong bộ nhớ.

Khi bạn thay đổi thiết lập cấu hình, bạn không cần phải dừng và khởi động lại ứng dụng. ASP.NET Framework tự động tại lại và lưu trữ thiết lập cấu hình khi thiết lập cấu hình được thay đổi trong file hệ thống.

File cấu hình có cấu như là một file XML, nên bạn cso thể sử dụng NotePade để cài đặt và chỉnh sửa.

15.1.2 Sử dụng công cụ quản trị website

Nếu bạn sử dụng Visual Web Developer(hoặc Visual Studio.NET), bạn có thể chỉnh sửa cấu hình với công cụ Web site Administrator. Đây là một công cụ cung cấp cho bạn một Form tương tác và chỉnh sửa cấu hình.

Đế sử dụng bạn làm theo hình dưới đây:

Giao diện Website Administrator hiện như sau:

Hom e: Chứa đựng đường dẫn đến các Tab khác

Application: Tab này cho phép bạn tạo và quản lý các thiết đặt cấu hình, Cấu hình SMTP, theo dõi ứng dụng, gỡ lỗi và các trang lỗi.

Provider: Cho phép bạn lựa chọn một nhà cung cấp cho Menbership và quản lý Role.

Khi công cụ website Administration được cài đặt như một ứng dụng ASP.NET, bạn có thể xem thực thể mã nguồn này theo đường dẫn sau:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles

15.1.3 Sử dụng giao diện snap-in quản lý ASP.NET Framework

Bạn có thể sử dụng ASP.NET Microsoft Management Console(MMC) công cụ Snap-in theo các bước sau:

Mở IIS từ from Start, Control Panel, Administrative Tools.

Nhấn chuột phải vào một thư mục hay thư mục ảo website và chọn Properties

Chọn Tab ASP.NET -> chọn Edit Configuration

15.1.4 Áp dụng các thiết lập cấu hình cho đường dẫn riêng

Bởi mặc đinh file Machine.config và Web.config được ap dụng cho tất cả các trang trong một folder cùng cấp và thư mục con. Tuy nhiên nếu cần bạn có thể cấu hình theo đường dẫn riêng Bạn thiết cấu hình tới đường dẫn riêng bởi việc sử dụng thành phần <element>

Ví dụ trong file Web.config sau sẽ password bảo vệ file Secret.aspx

<?xmlversion="1.0"?> <configuration>

<appSettings/> <connectionStrings/> <system.web>

<compilationdebug="false" /> <authenticationmode="Forms" /> </system.web>

<locationpath="Secret.aspx"> <system.web> <authorization> <denyusers="?"/> </authorization> </system.web> </location> </configuration>

Khi bạn yêu cầu chạy file Secret.aspx nó tự động chuyển sang trang Login.aspx

15.1.5 Khoá các thiết lập cấu hình

Bạn có thể khoá thiết lập cấu hình, Ví dụ có thể bạn muốn yêu cầu không ứng dụng chạy trên server thực thi trong chế độ debug. Trong trường hợp này, bạn có thể khoá thiết lập cấu hình debug trong file website Web.config, file Web.config trong thư mục root, hoặc file Machine.config.

Bạn có thể khoá thiết lập cấu hình bằng nhiều cách, trong ví dụ sau hướng dẫn bạn khoá một thiết lập bằng cách sử dụng allowOverride=”fasle” trong thành phần <location>

<?xmlversion="1.0"?> <configuration>

<locationallowOverride="false"> <system.web>

<compilationdebug="false"></compilation> </system.web>

</location> </configuration>

Trong ví dụ trên chúng ta khoá thành phần compilation, Một vấn đề xảy ra là nó khoá thực thể thành phần complication. Nếu bạn thử thay đổi một vài thuộc tính của thành phần complication ở một cấp cao hơn trong phân cấp cấu hình, thì một biết lệ sẽ được đưa ra.

Bạn có thể thêm các thuộc tính sau vào cấu hình thành phần riêng.

lockAllAttributesExcept: Cho phép khoá tất cả thuộc tính ngoại trừ danh sách giá trị trong thuộc tính này. bạn có thể thêm nhiều thuộc tính để ngoại trừ, mỗi thuộc tính cách nhau bởi một dấu phẩy.

lockAllElementsExcept: Cho phép bạn khoá tất cả các thành phẩn con của thành phần hiện tại ngoại trừ danh sách giá trị của thuộc tính này, bạn có thể thêm nhiều thuộc tính để ngoại trừ, mỗi thuộc tính cách nhau bởi một dấu phẩy.

lockAttributes: Cho phép bạn khoá nhiều thuộc tính, bạn có thể khoá nhiều thuộc tính để ngoại trừ, mỗi thuộc tính cách nhau bởi một dấu phẩy.

lockElements: Cho phép khoá nhiều thành phần con, mỗi thành phần cách nhau bởi một dấu phẩy.

lockItem: cho phép khoá thành phần hiện tại. Ví dụ , file Web.config sau khoá thành phần debug

<?xmlversion="1.0"?> <configuration>

<locationallowOverride="false"> <system.web>

<compilationdebug="false"lockAttributes="debug"></compilation> </system.web>

</location> </configuration>

15.1.6 Thêm vào cấu hình ứng dụng tuỳ biến

bạn có thể thêm vào các cấu hình ứng dụng tuỳ biến tới file Web.config dễ dàng bằng cách thêm vào phần appSettings, phần appSetting chứa đựng một danh sách các cặp khoá và giá trị. Ví dụ file Web.config sau.

<?xmlversion="1.0"?> <configuration>

<appSettings>

<addkey="welcome"value="Welcome to our Web site!" />

<addkey="copyright" value="Copyright (c) 2007 by TonghopIT"/> </appSettings>

</configuration>

Bạn có thể lấy giá trị từ các phần từ appSettings bằng lập hoặc khai báo trong thẻ trình như ví dụ sau:

<%@Page Language="C#"AutoEventWireup="true" CodeFile="Default.aspx.cs"

Inherits="_Default" %>

<%@ImportNamespace="System.Web.Configuration" %>

<scriptrunat="server">

void Page_Load(object sender, EventArgs e) {

lblWebcome.Text = WebConfigurationManager.AppSettings["welcome"].ToString(); }

</script>

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server">

Một phần của tài liệu Giáo trình ASP.NET cơ bản doc (Trang 165)

Tải bản đầy đủ (PDF)

(183 trang)