Chủ Nhật, 9 tháng 3, 2014

ASP NET nâng cao

</asp:Login>
</div>
</form>
</body>
</html>
Giao diện trang Login.aspx
(Hình 1)
Trong Listing 1.4 bạn để ý điều khiển Login có hai thuộc tính CreateUserText,
CreateUserUrl Nó sẽ đưa ra một link với Text là “Đăng ký” và một địa chỉ URL dẫn tới
trang đăng ký trong trường hợp này là trang Register.aspx.
Tập tin đính kèm:
1.2 Sử dụng điều khiển Login
Điều khiển Login đưa ra một form đăng nhập tiêu chuẩn. Mặc định điều khiển Login sử
dụng ASP.NET MenberShip để kiểm chứng người sử dụng, tuy nhiên bạn có thể tùy chỉnh
kiểu kiểm chứng người sử dụng với điều khiển Login.
Điều khiển Login hỗ trợ rất nhiều thuộc tính cho phép bạn tùy chỉnh cách hiển thị và ứng
xử của điều khiển như Listing 1.5 sau:
Listing 1.5 showLogin.aspx
Mã:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="showLogin.aspx.cs"
Inherits="showLogin" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Hiển thị Form đăng nhập</title>
<style type="text/css">
.login
{
width:250px;
font:14px Verdana,Sans-Serif;
background-color:lightblue;
border:solid 3px black;
padding:4px;
}
.login_title
{
background-color:darkblue;
color:white;
font-weight:bold;
}
.login_instructions
{
font-size:12px;
text-align:left;
padding:10px;
}
.login_button
{
border:solid 1px black;
padding:3px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login ID="Login1" InstructionText="Bạn cần nhập tên đăng nhập và mật khẩu
để đăng nhập"
TitleText="Đăng nhập" TextLayout="TextOnTop" LoginButtonText="Đăng nhập"
CssClass="login" TitleTextStyle-CssClass="login_title"
InstructionTextStyle-CssClass="login_instructions"
LoginButtonStyle-CssClass="login_button"
runat="server">
</asp:Login>
</div>
</form>
</body>
</html>
Kết xuất của chương trình trên
Hình 2
1.2.1 Tự động chuyển trang tới một trang chỉ định
Nếu bạn yêu cầu 1 trang mà bạn chưa được kiểm chứng, ASP.NET sẽ tự động chuyển bạn
tới trang Login.aspx. Sau khi bạn đăng nhập thành công, nó sẽ chuyển bạn ngược lại tới
trang yêu cầu.
Khi bạn bị chuyển sang trang Login.aspx, một chuỗi truy vấn tham số đặt tên là ReturnUrl
được tự động thêm vào trang yêu cầu, Chuỗi truy vấn này sẽ chứa đựng đường dẫn của
trang yêu cầu, Điều khiển Login sẽ sử dụng tham số ReturnUrl này chuyển trang trở lại
trang nguồn.
1.2.2 Tự động ẩn điều khiển Login khi kiểm chứng người sử dụng
Một vài website hiển thị điều khiển trên đỉnh tất cả các trang, khi người sử dụng đăng nhập
thành công thì điều khiển này tự động ẩn đi. Để làm điều này thật đơn giản trên ASP.NET,
bạn chỉ cần thêm vào một điều khiển Login trên MasterPage, và điều khiển login này có
thể hiển thị trên tất cả các trang có sử dụng MasterPage. Bạn có thể sử dụng thuôc tính
Orientation để hiển thị điều khiển Login này theo chiều ngang hoặc chiều dọc như ví dụ
sau:
Listing 1.6 Main.master
Mã:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs"
Inherits="Main" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Điều khiển Login</title>
<style type="text/css">
body
{
background-color:#e5e5e5;
}
.content
{
margin:auto;
width:650px;
border:solid 1px black;
background-color:white;
padding:10px;
}
.login
{
font:10px Arial,Sans-Serif;
margin-left:auto;
}
.login input
{

}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="content">
<asp:Login
id="loginVidu"
Orientation="Horizontal"
VisibleWhenLoggedIn="false"
DisplayRememberMe="false"
TitleText=""
CssClass="login"
Runat="server" />
<hr />
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</form>
</body>
</html>
Trang loginMaster.aspx
<%@ Page Language="C#" MasterPageFile="~/Main.master" AutoEventWireup="true"
CodeFile="loginMaster.aspx.cs" Inherits="loginMaster" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
<h1>Chào mừng bạn đến với website của chúng tôi</h1>
</asp:Content>
Kết xuất của chương trình
Hình 3
1.2.3 Sử dụng Templete
Điều khiển Login bao gồm thuộc tính LayoutTemplate cho phép bạn tùy chỉnh cách thể
hiện của điều khiển Login.
Khi bạn thêm vào một mẫu hiển thị, bạn cần thêm vào điều khiển và Temple các ID sau:
• UserName
• Password
• RememberMe
• FailureText
Và bạn cần thêm vào một thuộc tính CommandName với giá trị Login
Listing 1.7 LoginTemplete.aspx
Mã:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginTemplate.aspx.cs"
Inherits="LoginTemplate" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Trang đăng nhập</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login ID="Login1" runat="server">
<LayoutTemplate>
<asp:Label ID="lblusername" runat="server" Text="Tên đăng
nhập"></asp:Label><br />
<asp:TextBox ID="UserName" runat="server"></asp:TextBox><br />
<asp:Label ID="lblpass" runat="server" Text="Mật khẩu"></asp:Label><br />
<asp:TextBox ID="Password" runat="server"></asp:TextBox><br /><br />
<asp:Button ID="btnLogin" CommandName="Login" Text="Đăng nhập"
runat="server" />
</LayoutTemplate>
</asp:Login>
</div>
</form>
</body>
</html>
Kết xuất của chương trình
Hình 4
1.2.4 Thực hiện tùy chỉnh kiểm chứng với điều khiển Login
Mặc định, điều khiển Login sử dụng ASP.NET MenberShip để kiểm chứng tên sử dụng và
mật khẩu. Nếu bạn cần thay đổi ứng xủa mặc định bạn có thể điều khiển sự kiện
Authenticate của điều khiển Login như ví dụ dưới đây.
Listing 1.8 Web.config
Mã:
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<authentication mode="Forms">
<forms>
<credentials passwordFormat="Clear">
<user name="Thietke" password="itechpro"/>
<user name="Daotao" password="itechpro"/>
</credentials>
</forms>
</authentication>
</system.web>
</configuration>
Trang LoginCustom.aspx
Mã:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginCustom.aspx.cs"
Inherits="LoginCustom" %>
<script runat="server">
protected void loginCustom_Authenticate(object sender, AuthenticateEventArgs e)
{
string userName = loginCustom.UserName;
string Password = loginCustom.Password;
e.Authenticated = FormsAuthentication.Authenticate(userName, Password);
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Login Custom</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login ID="loginCustom" OnAuthenticate="loginCustom_Authenticate"
runat="server">
</asp:Login>
</div>
</form>
</body>
</html>
1.3 Sử dụng điều khiển CreateUserWizard
Điều khiển CreateUserWizard đưa ra một Form đăng ký người sử dụng, Một người đăng
ký thành công, người đăng ký mới đó sẽ được thêm vào website của bạn. Điều khiển
CreateUserWizard sử dụng ASP.NET MenberShip để tạo một người sử dụng mới.
Điều khiển CreatUserWizsrd hỗ trợ rất nhiều thuộc tính cho phép bạn tùy chỉnh cách hiển
thị và ứng xử như ví dụ sau:
Listing 1.9 showCreateUserWizard.aspx
Mã:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="showCreateUserWizard.aspx.cs" Inherits="showCreateUserWizard" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Hiển thị Form đăng ký người sử dụng</title>
<style type="text/css">
.createUser
{
width:350px;
font:14px Verdana,Sans-Serif;
background-color:lightblue;
border:solid 3px black;
padding:4px;
}
.createUser_title
{
background-color:darkblue;
color:white;
font-weight:bold;
}
.createUser_instructions
{
font-size:12px;
text-align:left;
padding:10px;
}
.createUser_button
{
border:solid 1px black;
padding:3px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CreateUserWizard
id="CreateUserWizard1"
ContinueDestinationPageUrl="~/Default.aspx"
InstructionText="Please complete the following form to register at this Website."
CompleteSuccessText="Your new account has been created. Thank you for
registering."
CssClass="createUser"
TitleTextStyle-CssClass="createUser_title"
InstructionTextStyle-CssClass="createUser_instructions"
CreateUserButtonStyle-CssClass="createUser_button"
ContinueButtonStyle-CssClass="createUser_button"
Runat="server" />
</div>
</form>
</body>
</html>
Kết xuất của chương trình
Hình 5
1.3.1 Gửi Email thông báo tới người sử dụng
Bạn có thể thiết lập cho phép điều khiển CreateUserWizard gửi thư tự động đến người sử
dụng khi đăng ký thành công một tài khoản mới trên website của mình
Ví dụ bạn có thể gưi một mail chứa đựng thông tin về tài khoản và mật khẩu của người sử
dụng về tài khoản email của người này.
Listing 1.10 CreateUserWizardEmail.aspx
Mã:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="CreateUserWizardEmail.aspx.cs" Inherits="CreateUserWizardEmail" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Send Email</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CreateUserWizard
id="CreateUserWizard1"
Runat="server">
<MailDefinition
BodyFileName="Register.txt"
Subject="Xác nhận đăng ký"
From="Admin@YourSite.com" />
</asp:CreateUserWizard>
</div>
</form>
</body>
</html>
Lớp MailDefinition hỗ trợ các thuộc tính sau:
BodyFileName: chỉ định đường dẫn chứa nội dung thư
CC: Cho phép gửi một bản copy tới hòm thư khác
EmbeddedObjects: Cho phép gửi kèm các file khác như là ảnh, doc…
From: Địa chỉ hòm thư gửi.
IsBodyHtml: Cho phép gửi định dạng Html
Priority: Cho phép bạn chỉ định độ ưu tiên của thư, nó có thể có các giá trị sau: High, Low,
và Normal
Subject: Chỉ định tiêu đề của thư.
Lớp MailDefinition sử dụng mail server được cấu hình bởi thành phần SMTP trong file
Web.config như ví dụ sau:
Listing 1.11 Web.config
Mã:
<configuration>
<system.net>
<mailSettings>
<smtp deliveryMethod="PickupDirectoryFromIis"></smtp>
</mailSettings>
</system.net>
</configuration>
Với ví dụ trên là bạn dùng mail server từ máy cục bộ, bạn cũng có thể thiết lập mail server
từ một máy chủ khác bằng việc chỉ định các mail host, username và Passwword
Listing 1.12 Web.config
Mã:
<configuration>
<system.net>
<mailSettings>
<smtp>
<network host="mail.yourdomain.com" userName="admin" password="secret"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
1.3.2 Chuyển người sử dụng sang một trang khác tự động
Khi bạn đăng nhập thành công trên trang Login.aspx, trang tự động chuyển lại trang người
sử dụng vừa yêu cầu. Với điều khiển CreateUserWizard không tự động làm việc này cho
chúng ta, để nó có thể làm việc giống với điều khiển Login chúng ta cần viết thêm một ít
code.
Điều khiển login trong Listing 1.12 sau bao gồm một đường để người sử dụng chuyển đến
trang đăng ký sử dụng được đặt tên là CreateUserWizardReturn.aspx. Trong sự kiện
Page_Load(). Giá trị của chuỗi truy vấn được thêm vào trang đăng ký.
Listing 1.13 LoginReturn.aspx
Mã:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginReturn.aspx.cs"
Inherits="LoginReturn" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string dest = Request.QueryString["ReturnUrl"];
Login1.CreateUserUrl = "~/CreateUserWizardReturn.aspx?ReturnUrl=" +
Server.UrlEncode(dest);
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Đăng nhập</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Login
id="Login1"
CreateUserText="Register"
CreateUserUrl="~/CreateUserWizardReturn.aspx"
Runat="server" />
</div>
</form>
</body>
</html>
Trước khi sử dụng Listing 1.13 bạn cần thay đổi tên trang LoginReturn.aspx thành trang
Login.aspx. Nếu người sử dụng yêu cầu đến một trang yêu cầu phải kiểm chứng, người sử
dụng sẽ tự động chuyển tới trang Login.aspx. Tham số ReturnUrl sẽ được gắn vào trang

Xem chi tiết: ASP NET nâng cao


Không có nhận xét nào:

Đăng nhận xét