I h.0i in
1.2.5. Modulediễn đàn 2 256 SE x13 3131111 11112 11x11 rkrrred
Người dựng nạc danh cú thể duyệt xem bài bỡnh luận trong Cỏc diễn đàn, tuy nhiờn đề gửi bài hay bỡnh luận họ phải đăng nhập vào hệ thụng.
Chức năng quản lớ diễn đàn, quản lớ cỏc bài thỏa luận dành cho người dựng cú vai trũ là editor. (biờn tập)
1.2.6. Module tỡm kiếm siờu thị
Người dựng cú thờ sử dụng module này đề tỡm kiếm cỏc siờu thị gần nơi mỡnh ở
theo khoảng cỏch và tỡm đường ởi đờn một siờu thị nào đú.
Với người dựng cú vai trũ là admin thỡ cũn cú thờm chức năng thờm vị trớ siờu thị mới vào hệ thụng.
1.2.7. Module bài bỏo, tin tức, và blog
Người dựng sử dụng module này cú thờ xem toàn bộ cỏc bài bỏo, xem theo đầu
mục, xem chỉ tiờt bài bỏo , việt lời bịnh và đỏnh giỏ .
Người dựng với vai trũ là editor cú thờm cỏc chức năng như quản lớ cỏc đầu mục bỏo, tạo đầu mục mới , xúa đõu mục đang cú trong hệ thụng. Quản lớ cỏc bài bỏo (chỉnh sửa, xúa), tạo bài bỏo mới
1.2.8. Module quốc tế húa
Module này cho người dựng biết thụng tin địa phương của người dựng qua thụng tin ở hụ sơ đăng kớ như thời gian, tiờn dựng tại địa phương (chẳng hạn như ở Mĩ là USD, ở Việt nam là VND)
1.2.9. Module kiểm thử
Ở module này chỉ kiểm thử với hai module khỏc trong hệ thống là module bài bỏo ,
tin tức, blog và module gửi thư.
2. MODULE Hề SƠ NGƯỜI DÙNG VÀ THÀNH VIấN
2.1. Tổng quan về module
Module sẽ sử dụng built-in ASP.NET 2.0 membership system (hệ thống quản lớ thành viờn xõy dựng sẵn cho ASP.NET 2.0) cung cấp bởi Microsoft cho phộp người dựng (user) thực hiện cỏc chức năng gồm cú đăng kớ tài khoản, đăng nhập ,
thay đổi mật khẩu, lấy lại mật khẩu, nhập thụng tin hồ sơ , cho phộp nhà quản trị
hệ thống (admin) đăng nhập vào hệ thống, quản lớ quyền, quản lớ người dựng
(trong đú cú xem toàn bộ người dựng trong hệ thống, tỡm người dựng và xúa
người dựng, thay đổi vai trũ người dựng... ).
Trước khi lưu trữ mật khẩu người dựng vào CSDL để bảo mật tất cả cỏc mật khẩu
sẽ được thay đổi thụng qua hàm băm .
Hỡnh 3.2 — Sơ đồ tổng quan người dựng và cỏc chức năng của module Ghi chỳ: Module này được sử dụng bởi hầu hết cỏc module khỏc như module cộng đồng, module tin tức bài bỏo, hay module đỏnh giỏ và cho điểm cỏc luồng
thảo luận trong diễn đàn,..
2.2. Sơ đồ chức năng
Hỡnh 3.3 — Sơ đồ tổng quan chức năng của module theo mụ hỡnh UC
2.3. Cỏc bảng DL của module
2.3.1. Tạo bảng DL
Sau khi tạo CSDL GlobalStore với SQL Server Management Studio , chạy file aspnet_regsdql trong thư mục C:\Windows\Microsofft.NET\FEramework\v2.0.50727 đề tạo cỏc bảng dành cho module thành viờn và hồ sơ mà ASP.NET phiờn bản 2.0
đó cung cấp sẵn.
Ngoài ra ta xõy dựng thờm bảng language để dựng cho việc tạo mục ngụn ngữ trong hụ sơ người dựng như sau:
Column Name Data Type Àlloww Nulls
XÃ annuanell) uniqueidentifter
Lannuanelame varchar(100)
Hỡnh 3.4 Bảng Langugage
2.3.2. Cõu hỡnh trong web.config cho membership, role và profile:
Mục membership:
<membership> <providers>
<clear/>
<add name=”AspNetSqalMembershipProvider"
type="System.Web. Security.SqlMembershipProvider,System.Web, Version=2.0.0.0,
Culture=neutral,PublicKey Token=b03f5f7f11d50a3a" connectionStringName=”GlobalStoreConnectionString" enablePasswordRetrieval="false" enablePasswordReset='"true” requiresQuestionAndAnswer="true” applicatiũnName="”GlobalStore" requiresUniqueEmail="false" passwordFormat="Hashed" maxlInvalidPasswordAttempts="5" minRequiredPasswordLength="”6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=”"/> <iproviders> </membership>
Qua nội dung phõn config cú thờ thấy ta dựng ASPNETSglMembershipProvider
phiờn bản 2.0 . Mật khõu trước khi lưu xuụng CSDL được thay đụi thụng qua hàm băm passwordFormat="Hashed",... Mục Role: <roleManager enabled="true"> <providers> <clear/> <add connectionStringName="GlobalStoreConnectionString” applicatiũonName="”GlobalStore"name="AspNetSaqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f1 1d50a3a”/> <iproviders> </roleManager>
Mục Profile:
ASP.NET cung cấp một cơ chế cú sẵn đề quản lớ hồ sơ người dựng. Ta chỉ cần
khai bỏo cỏc thụng tin cần thiệt lưu trong hỗ sơ. Khi ứng dụng chạy thụng tin thuộc tớnh của hỗ sơ sẽ được thờm vào lớp Page .
<profile> <properties>
<add name="”Subscription" type=”String"/> <add name=”Language" type="String"/>
<add name="ShoppingCart” type=”"GlobalStore.Models.ShoppingCart"
serializeAs="Binary" allowAnonymous=true ”/> <group name=”Personallnformation">
<add name=”FirstName" type="String"/> <add name=”LastName" type="String”/> <add name=”Gender" type="String"/> <add name=”BirthDate” type="DateTime"/> <add name=”Occupation” type="String”/> <add name= Website” type="String"/> </group>
<group name="Contactlnformation”> <add name="”Street" type=”String”/> <add name=”City" type="String”/> <add name="”State” type="String"/> <add name=”ZipCode”" type="String”f> <add name=”Country" type="String"/> </group>
<iproperties> <iprofile>
2.4. Models
2.4.1. Lớp UserInformafion
Hệ thống sẽ cú một số trang mà người dựng sẽ sử dụng liờn quan với việc đăng
nhập và quản lớ tài khoản của họ. Đề truyền dữ liệu mà khụng phải tạo một số
lượng lớn biến cho mỗi phương trức hành động chỳng ta tự tạo lớp
Userlnformation để dựng. ằ Í UIserinformation Class = Properties “3! ChannePaseworr 7 ConfirnFas=worrd SẼ. Email F k nó Paszword $f. RetumLil P=p Rcle=
7 Sec retll nsuuer
*#? SecretQuestion
m Liserhlame
Hỡnh 3.5 Sơ đồ lớp Userlnformation 2.4.2. Lớp ProfileInformation
Lớp này được dựng đề quản lớ thụng tin hồ sơ đồng thời hỗ trợ để tạo cỏc chọn
lựa dropdown phõn điờn thụng tin trờn trang quản lớ hụ sơ như nghệ nghiệp, nước hiện tại ở, ngụn ngữ, ... Cỏc thuộc tớnh của lớp tương ứng với cỏc thuộc tớnh khai bỏo trong web.config và cỏc phương thức tạo dropdown tương ứng cho phần quản
lớ hồ sơ người dựng gồm cú dropdown cho cỏc mục:
e Counlry. Gender. Language. Occupatfion. Subscription. :„. 27
nniieinỏfosrmadion Clóss =' Broperties ZŠf. BirthDate S ty ZŠ*f Country Fấf FirstName mm Genrler [se ffF Lanquaqe Iấƒ LastName j Orrupation FấP State HP. Street 7 SulscrI2tIar [yipe FŠ*!. Website m7 Zipcode E=l Methods GetCountryList tsetGsenrlerl Is† GetLanquageList GetệccupationList GetSubsrcriEticnList Ê Ê€ Ê ¿ 4 Hỡnh 3.6 Sơ đồ lớp Profilelnformation 2.5. Controllers xài
Tương ứng với cỏc chức năng của module ta cỏc phương thức cho controller của module này như sau:
Phương thức hành động Bảo mật ' Cỏc tham số
Logout _——= _——
Login _—=- _—-
Login_OnPost _—= string userName, sftring password, bool persistent, string returnUrl
ForgotPassword _——- _——-
ForgotPassword_OnPost _—- string userName, string secretAnswer
Register _ _—-
Register_OnPost _—- Userlnformation userlnformation ChangePassword _—- string resetPassword
ChangePassword OnPost ' -—- Userlnformation userlnformation
UserProfile _— _——-
UserProfile_OnPost _— Profilelnformation profilelnformation
GetErrorMessage _—— MembershipCreateStatus
membershipCreateStafus
ManageUser Admin siring searchType, string searchlnput DeleteUser Admin string Ăd
ManageRole Admin _——-
Tại hhọœC
CreateRole Admin sfring newRole
DeleteRole Admin sfring Ăd
EditUser Admin string id
EditUser_OnPost Admin string Ăd, bool approved
2.6. Views
Module này tạo thành từ nhiều view trong đú cú những views được sử dụng bởi
` 1 ` Ấ: ` ~ " ` Ã x "sA ơ " ơ ^ Kả
người dựng cuụi và những views được dựng đờ hồ trợ việc quản trị bảo mật của
x5 ^ ` r$ JL.ơ r$ Kả x " `
module. Dưới đõy là thờ hiện cụ thờ của cỏc views trong module này:
Liờn kết tới trang login được hiễn thị trờn cựng phớa bờn phải ngay sau mục túm
lược việc mua hàng — shopping summary của mỗi trang bất kể khi nào mà người dựng là nạc danh. Sau khi người dựng đăng nhập vào hệ thống thỡ liờn kết này sẽ
được õn đi thay vào đú là cỏc chức năng mà người dựng đó đăng nhập cú đú là
đăng xuất — logout, quản lớ hồ sơ — manage profile, và thay đổi mật khẩu — change
password.
View đăng kớ cho phộp người dựng mới đăng kớ tài khoản với hệ thống. Trong quỏ
trỡnh đăng kớ người dựng mới sẽ tạo hồ sơ với cỏc thụng tin : FirstName (string) ,
LastName (string) , Gender (string) , BirthDate (datetime), Occupation (sring) , và
website (siring) . Nhúm thụng tin về địa chỉ trong hồ sơ cú cỏc thuộc tớnh phụ trợ sau: Street, PostCode, City, State và Country tất cả đều cú kiểu string. Nhúm cuối
cựng về Preferences cú cỏc thuộc tớnh Cultrure và Newsletter .
View quờn mật khẩu cho phộp người dựng thay đổi mật khẩu bằng việc trả lời một
cõu hỏi bảo mật sau khi đó điền đỳng tờn người dựng vào ụ người dựng. Sau khi trả lời đỳng cõu hỏi bảo mật lỳc này người dựng sẽ được phộp tạo mật khẩu mới
và dựng tài khoản của mỡnh với mật khõu mới này.
Trang quản lớ hồ sơ người dựng sẽ chỉ truy cập được bởi người dựng . Nú cho
phộp người dựng thay đổi cỏc thụng tin trờn hồ sơ mà họ thiết lập từ lỳc họ tạo tài
khoản.
Cỏc trang để quản lớ người dựng dành cho người quản trị như view dành cho quản
lớ người dựng ManageUser view giỳp nhà quản trị tỡm kiếm người dựng hoặc bằng
tờn hoặc bằng địa chỉ , view dành cho việc chỉnh sửa — edit user , sẽ hiển thị cỏc chỉ tiế thờm về người dựng và cho phộp nhà quản trị để hoặc khụng để tài khoản đú hoạt động , hay thay đổi cập nhật vai trũ người dựng.
Ngoài ra cũn cú view dành cho quản lớ vai trũ - ManageRole được sử dụng để tạo
, xúa cỏc vai trũ trong hệ thống.
Như vậy ta cú cỏc views của module này
ChangePassword.aspx Trang này dựng thay đổi
mật khõu của người dựng user/changepassword/
EditUser.aspx Trang này cho phộp thay
đổi quyền người dựng,
ngăn hoạt động của tài khoản
user/edituser/4{id)}
ForgotPassword.aspx . Trong trường hợp người user/forgotpassword dựng quờn mật khõu
Login.aspx Trang đăng nhập user /login
ManageRole.aspx Trang dành cho nhà quản trị tạo / xúa cỏc vai trũ ỏp
dụng cho hệ thống
user/managerole
ManageUser.aspx Trang dành cho nhà quản trị xem danh sỏch người dựng, qua đú xúa người dựng
user/manageruser
Register.aspx Trang này cho phộp người dựng nạc danh trở thành người dựng đó đăng kớ
bằng việc điền thụng tin
người dựng và đăng kớ
uSer/register
UserProfile.aspx
Trang hồ sơ dành cho
người dựng thay đổi thụng
tin hồ sơ của mỡnh user/profile
2.7. Sử dụng Javascriptf
Trong view content của trang quản lớ người dựng (ManageUSser.aspx) việc xúa người dựng sẽ được sử lớ bằng kĩ thuật Ajax với đoạn mó javascript nằm trong tệp manage-user.js với nguụn /content/scripts/manage-user.js.
Đoạn mó lệnh xúa người dựng sẽ được sử dụng để triệu gọi phương thức xúa người dựng DeleteUser trong UserController . Nội dung của đoạn lệnh:
$(".delete-user-button").click(function() { var userld = $(this).attr("meta:id"); $.post( "/User/DeleteUser", {Ăd: userld }, function(data) { $("#user-" + data.object.id).rernove(); } Ison” return false; b› Tại hhọœC U: ThăngLonp 30
Tương tự vậy thỡ trong view content của trang quản lớ vai trũ (ManageRtole.aspx)
chức năng xúa vai trũ cũng được xử lớ bảng kĩ thuật này với đoạn mó xúa nằm trong tệp manage-role.js nguụn /content/scripts/manage-role.js.
2.8. Cầu hỡnh định tuyến
Sử dụng định tuyến mặc định
routes.MapRoute( "Default",
"{controller}/{action}',
new { controller = (string)null, action = (string)null } )
2.9. Xử lớ xỏc thực người dựng
public void FormsAuthentication_ OnAuthenticate(object sender, FormsAuthenticationEventArgs args)
lf (FormsAuthenticatlon.CookiesSupported)
If (Request.Cookies[lFormsAuthenticatlon.FormsCookieName] != null)
{ try
FormsAuthentication Ticket ticket =
EormsAuthentIcation.Decrypt(Request.Cookies[F ormsAuthentication.FormsCookie Name].Value);
args.User = new GenericPrincipal( new Forrnsldentity(ticket),
new string[0] // The roles are handled by the //RoleManager
)›
args.Context.User = args.User;
catch (Exception) { /* decryption failed ”/ }
} } else {
throw new HttpException("Cookieless Forms Authentication is not supported for this application.");
}
3. MODULE THƯƠNG MẠI :„.
3.1. Tổng quan về module
Chuỗi cỏc siờu thị của cụng ty Golbal Store Pte. đều cú chung cấu trỳc về cỏc gian
hàng như thiết bị õm thanh — Audio, đồ cho ụ tụ và thiết bị định vị - Car and GPS, mỏy tớnh — Computers , điện thoại cố định và đồ văn phũng — Mobilephones and
Office, õm nhạc, phim và sỏch truyện — Music , Movies and Books. Tuy nhiờn cú một số gian hàng trống tạo khụng gian mở cho người dựng thuờ. Khỏch hàng khi
thuờ gian hàng trống phải đăng kớ tài khoản , những khỏch hàng này cú toàn quyền quản lớ gian hàng của mỡnh.
Khỏch hàng khi mua hàng trực tuyến với Global Store Pte họ sẽ cú thể duyệt cỏc
gian hàng của siờu thị - xem danh sỏch cỏc gian hàng. Danh sỏch cỏc gian hàng
sẽ cú tờn gian hàng và đặc tả về gian hàng.
Khi khỏch hàng chọn xem một gian hàng - xem danh sỏch cỏc sản phầm cú trong
một gian hàng cụ thể . Danh sỏch cỏc sản phẩm với mỗi sản phẩm sẽ cú kốm theo
thụng tin vắn tắt về sản phẩm (tờn sản phẩm, thụng tin vắn tắt về sản phẩm, giỏ
bỏn, giỏ bỏn giảm giỏ nếu cú,số lượng sản phẩm cũn trong cửa hàng) ,nỳt Add To
Cart cho phộp người dựng chọn đưa sản phẩm vào giỏ hàng và một liờn kết cho
phộp xem chỉ tiết sản phẩm, hỡnh ảnh sản phẩm thường là nhỏ hơn so với hỡnh ảnh trong mục xem chỉ tiết.
Khi khỏch hàng chọn xem chỉ tiết sản phẩm thỡ sẽ được chuyờn đến view dành cho xem chỉ tiết sản phẩm. Trờn view này người dựng sẽ thấy được thụng tin chỉ tiết
sản phẩm như tờn sản phẩm, số hiệu sản phẩm, hỡnh ảnh sản phẩm to hơn nếu cú, thụng tin chỉ tiết về sản phẩm nếu cú, giỏ bỏn, giỏ bỏn đó cú khuyến mói giảm
giỏ nếu cú, số lượng hàng cú trong kho, ụ chọn số lượng mua (khỏch hàng hoàn toàn cú thể chọn mua với số lượng mong muốn vỡ siờu thị cú thể điều động hàng), cuối cựng là nỳt Add to Cart.
Nếu người dựng chọn mua sản phẩm thỡ sẽ thấy được một hoạt cảnh (animation)
dạng hỡnh ảnh sản phẩm bay vào giỏ hàng (fly-into-cart) . Ở đõy là sản phẩm sẽ
bay vào vị trớ cú thụng tin túm tắt mua hàng (shopping summary) cỏc thụng tin vẫn
tắt mua hàng sẽ được cập nhật đú là số tiền phải trả và số mặt hàng trong giỏ
hàng (items). Trong shopping summary cũng cú liờn kết check out đưa người dựng
tới thụng tin mua sắm chỉ tiết (view shoppingCart) để qua đú người dựng cú thể kiểm tra chỉ tiết hơn những gỡ mỡnh đó mua.
Khỏch hàng khi chọn check out ở mục shopping summary sẽ được chuyờn tới
view thụng tin chỉ tiết mua sắm của khỏc hàng.
với người dựng (nhõn viờn , quản trị - store room worker , admin) thực hiện việc nhận lệnh đặt mua, quản lớ hàng trong kho (xem, thờm, xúa , cập nhật sỏch), với hệ thống bờn ngoài (Paypal system, shipping system) giỳp thực hiện việc thanh toỏn trực tuyến và giao hàng tới người mua.
Người dựng với vai trũ quản lớ siờu thị - Store Keeper khi đăng nhập vào hệ thống cú thể quản lớ gian hàng mà mỡnh tạo ra như thờm mới cỏc sản phẩm vào gian hàng, xúa sản phõm của gian hàng, ...
Ghi chỳ: Với phần mua hàng thỡ khụng bắt buộc người dựng phải cú tài khoản và
đăng nhập vào hệ thống trỏnh trường hợp đụi khi người dựng khụng muốn mắt
thời gian đăng kớ tài khoản
3.2. Sơ đồ chức năng
Hỡnh 3.7 Sơ đồ chức năng theo mụ hỡnh UC của module thương mại
3.3. Tỡm hiểu , sử dụng Paypal cho chức năng thanh toỏn (check
ouf)
Paypal cú 3 loại tài khoản sử dụng tiền thật cho khỏch hàng, những người buụn bỏn trực tuyến và cỏc doanh nghiệp và 1 loại tài khoản dựng tiền ảo và dành cho cỏc nhà phỏt triển ứng dụng để thử nghiệm ứng dụng của mỡnh. Ở đõy ta quan tõm tới loại hỡnh tài khoản thứ tư : Sandbox Account vỡ ứng dụng chỉ ở dạng thử nghiệm.
3.3.1. Tạo tài khoản ảo cho mục đớch kiểm thử
Sandbox Account: Là tài khoản cú thể ở dạng dựng cho doanh nghiệp , hoặc cho người buụn bỏn trực tuyến hay cho cỏ nhõn tuy nhiờn lại chỉ được tạo ra và sử dụng được trong mụi trường thử nghiệm và dĩ nhiờn chỉ dựng cho mục đớch thử
nghiệm mà thụi. Để kiểm nghiệm chỉ cần 2 tài khoản : 1 doanh nghiệp , 1 cỏ nhõn
là đủ. Trước khi tạo 2 tài khoản này ta cần tạo tài khoản dành cho nhà phỏt triển ứng dụng (Dựng Paypal cho website thương mại của mỡnh) sau đú với tài khoản này cú thể tạo bao nhiờu tài khoản Sandbox tựy theo ý muốn. Tạo tài khoản dành cho lập trỡnh viờn tại địa chỉ sau: htfps://developer.paypal.com/
Sau đú tạo 2 tài khoản Sandbox dành cho người mua và bỏn như hỡnh vẽ sau
Test Accounts
Yaur test azcounts are lizted belaw. Yau must have ọ Business accouint ta represent ọ marcharnt, and a Eezrsnunal accnunt ta represent a buyer. To simulate an actinn on the live site (PayEal.coam),
select a test account and click Enter Sandbox Test Site.
Create Accourt: Przconflgured | Crazatz Mlanually Website Pavmients Pro (LIS, LIk<]
Lag-in Email Payment Review “g2 nebiSE Reset
8! dangti 1273804062 biz@tyahoo.com Disablad Di=ahlan Recet Businass Varifiad
View Details
danuti_ 1270051072. nerfmyahoo.cam Disablsd MA Re=et
Eer=unal werified
BH view Details
Helete
Hỡnh 3.8 — Cỏc tài khoản kiểm thử với sandbox
Như vậy là ta đó cú tài khoản để thực hiện cỏc giao dịch ảo cho mục đớch kiểm thử với website thương mại của mỡnh.