You are on page 1of 31

Khoa Công nghệ thông tin

Bộ môn Công nghệ phần mềm

Nguyễn Huy Khánh


nhkhanh@fit.hcmus.edu.vn
Giới thiệu về Quản lý trạng thái
Các đối tượng quản lý trạng thái của ASP
.NET
Client-based State
Server-based State
ASP.NET Identity

Phát triển ứng dụng Web 2


Giới thiệu về Quản lý trạng thái
Các đối tượng quản lý trạng thái của ASP
.NET
Client-based State
Server-based State

Phát triển ứng dụng Web 3


Mỗi ứng dụng web cần chia sẻ thông tin
giữa các request
Giao thức HTTP là Stateless
Mỗi request gửi đến server được xem là một
request mới
Thông tin của request trước sẽ không tồn tại
cho request sau
ASP .NET cung cấp các cơ chế cho phép
quản lý thông tin giữa các request
Các đối tượng quản lý trạng thái (State) phía
Client và Server
Cơ chế Cache
Phát triển ứng dụng Web 4
Giới thiệu về Quản lý trạng thái
Các đối tượng quản lý trạng thái của ASP
.NET
Client-based State
Server-based State

Phát triển ứng dụng Web 5


Là các đối tượng trạng thái được lưu trữ ở
máy Client
Bao gồm
Hidden Fields
QueryStrings
Cookies

Phát triển ứng dụng Web 6


Lưu trữ trạng thái trong WebForm giữa các
postback
Render về phía trình duyệt với thẻ
<input type=‘hidden’ .. />
Có thể sử dụng hidden field để lưu trữ trạng
thái của các control trong WebForm ngay cả
khi ViewState bị disable
Chỉ thích hợp trong việc lưu trữ dữ liệu thuộc
về kiểu cơ sở ( int, float, string, … )

Phát triển ứng dụng Web 7


Là thông tin bổ sung thêm vào cuối chuỗi
URL
http://domain/pathfile?name1=value1&name2=value2

Query string được Url encoded ( các ký tự


đặc biệt hoặc dấu xuất hiện trong query
string đều được thay thế )
http://www.whatever.com/file.aspx?p=resum%E9&name=John+Lock

Thông tin truyền đi bị giới hạn (IE – 2Kb)


Không thích hợp truyền các thông tin bảo
mật
Nhận thông tin truyền từ Query string
string name = Request.QueryString[“name"].ToString();
Phát triển ứng dụng Web 8
Là các thông tin (name – value) được lưu trong
một hoặc nhiều tập tin trên máy tính client
Các tập tin cookies do Browser quản lý
Kích thước của tập tin cookies có giới hạn
(khoảng 4Kb)
Browser sẽ tự động xóa file cookie vào thời
điểm được chỉ định trong thuộc tính Expires của
cookie
Ứng dụng lưu các thông tin về Client để tái sử
dụng ở những lần sử dụng sau:
Thông tin cá nhân trong hóa đơn thanh toán
Thông tin Username & Password

Phát triển ứng dụng Web 9


Browser và Server trao đổi cookie khi có
request đến một page bất kỳ trong cùng một
site (domain)
Browser quản lý không cho cookie trong
domain này truyền đến domain khác
Số lượng file cookie trong một domain có
giới hạn (IE – 20 files)

Phát triển ứng dụng Web 10


Lớp đối tượng quản lý thông tin Cookie trong ASP.NET
Các thuộc tính của HttpCookie
Name : tên của Cookie
Value : Giá trị của Cookie
Domain : domain cookie này thuộc về.
Expires : xác định thời gian có hiệu lực của Cookie
HasKeys : Cookie có tập giá trị con hay không
Values : tập các giá trị của Cookie

Phát triển ứng dụng Web 11


Ghi cookies
Response.Cookies[cookie][(key)|.attribute] = value;
cookie: tên biến
key : tham số tùy chọn, có thể đặt nhiều giá trị cho 1
cookie
attribute: thuộc tính (domain, path,….)

Đọc giá trị cookies


value = Request.Cookies[cookie][(key)|.attribute]

Phát triển ứng dụng Web 12


Ghi
Response.Cookies["userName“].Value = "mike“;
Response.Cookies["userName“].Expires = DateTime.Now.AddDays(1);

Đọc
if (Request.Cookies["userName“] != null)
LabelUsername.Text = Request.Cookies["userName“].Value;

Xóa
Response.Cookies["userName“].Expires=DateTime.Now.AddDays(-1);

Phát triển ứng dụng Web 13


Ghi
Response.Cookies["userInfo“]["userName“] = "mike“;
Response.Cookies["userInfo“]["lastVisit“]=DateTime.Now.ToString();
Response.Cookies["userInfo“].Expires = DateTime.Now.AddDays(1);

Đọc
if (Request.Cookies["userInfo“] != null) {
LabelUsername.Text = Request.Cookies["userInfo“]["userName“];
LabelLastVisit.Text = Request.Cookies["userInfo“]["lastVisit“];
}

Xóa
Response.Cookies["userInfo“].Expires = DateTime.Now.AddDays(-1);

Phát triển ứng dụng Web 14


Ghi
HttpCookie cookie = new HttpCookie(“userInfo”);
cookie["userName“] = "mike“;
cookie["lastVisit“] = DateTime.Now.ToString();
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);

Đọc
HttpCookie cookie = Request.Cookies["userInfo“];
if (cookie != null) {
LabelUsername.Text = cookie["userName“];
LabelLastVisit.Text = cookie["lastVisit“];
}

Phát triển ứng dụng Web 15


Giới thiệu về Quản lý trạng thái
Các đối tượng quản lý trạng thái của ASP
.NET
Client-based State
Server-based State
Cơ chế Cache của ASP .NET

Phát triển ứng dụng Web 16


Là các đối tượng trạng thái được lưu trữ ở
máy Server
Bao gồm
Session
Application

Phát triển ứng dụng Web 17


Một phiên làm việc (session) là một chuỗi
các thao tác của người dùng trên cùng một
web application
Với mỗi phiên làm việc của client, sẽ có một
Session Object được tạo ra,
Được lưu trữ trên server
Cung cấp những thông tin về phiên làm việc
hiện hành của client
Được duy trì khi người dùng duyệt từ WebForm
sang WebForm khác trong cùng một site
Bị hủy khi:
Người dùng tường minh thoát khỏi session
Sau một khoảng thời gian (time-out) , mặc định là 20 phút

Phát triển ứng dụng Web 18


Khởi tạo/ Gán giá trị cho biến Session
Session[“name”] = value;
Đọc dữ liệu từ biến Session
Object obj = (Object)Session[“name”];
Qui định khoảng thời gian tồn tại của một phiên làm việc
Session.Timeout = minutes;
Lấy định danh ID duy nhất của phiên làm việc
Session.SessionID
Hủy phiên làm việc (hủy cả biến dữ liệu)
Session.Abandon();

Phát triển ứng dụng Web 19


Làm thế nào để ngăn không cho người dùng
truy cập vào các trang web nếu chưa đăng
nhập?
Ý tưởng
Dùng các biến Session để lưu trạng thái đăng nhập của người
dùng:
Session[“IsLogin”] = 0/1 : Lưu trạng thái đăng nhập
Session[“Username”] : Lưu Tên đăng nhập
Session[“Authentication”]: Lưu Loại quyền đăng nhập

Phát triển ứng dụng Web 20


Quản lý dữ liệu dùng chung trong cùng một
ứng dụng web
Được lưu trữ trên server
Có thể truy xuất bởi tất cả các session trong
site
Tồn tại trong suốt chu trình sống của ứng
dụng web

Phát triển ứng dụng Web 21


Ghi thông tin
Application["SiteRequestCount"] = 0;
Application["SiteName“] = "www.site.com";

Đọc nội dung từ Application State


int count = (int)Application["SiteRequestCount"];
string name = (string)Application["SiteName"];

Phát triển ứng dụng Web 22


Lock application state để hạn chế lỗi xảy ra
do việc truy xuất đồng thời bởi nhiều client
request
Application.Lock();
if (Application["SiteRequestCount"] == null)
{
Application["SiteRequestCount"] = 0;
}
count = (int)Application["SiteRequestCount"];
count++;
Application["SiteRequestCount"] = count;
Application.UnLock();

Phát triển ứng dụng Web 23


Authentication is knowing the identity of the user.
For example, Alice logs in with her username and
password, and the server uses the password to
authenticate Alice.
Authorization is deciding whether a user is allowed
to perform an action. For example, Alice has
permission to get a resource but not create a
resource.

http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api

Phát triển ứng dụng Web 24


Phát triển ứng dụng Web 25
One ASP.NET Identity system
Ease of plugging in profile data about the
user
Persistence control
Unit testability
Role provider
Claims Based
Social Login Providers
Azure Active Directory
OWIN Integration
NuGet package
Phát triển ứng dụng Web 26
http://coding.abel.nu/2014/06/asp-net-identity-and-owin-overview/

Phát triển ứng dụng Web 27


http://www.spheregen.com/asp-net-identity-2-0-2/

Phát triển ứng dụng Web 28


http://typecastexception.com/post/2015/02/15/ASPNET-Web-API-Understanding-OWINKatana-AuthenticationAuthorization-Part-III-Adding-Identity.aspx

Phát triển ứng dụng Web 29


http://odetocode.com/blogs/scott/archive/2013/11/25/asp-net-core-identity.aspx

Phát triển ứng dụng Web 30


ASP.NET Session-State Modes
https://msdn.microsoft.com/en-
us/library/ms178586(v=vs.140).aspx
Introduction to ASP.NET Identity
http://www.asp.net/identity/overview/getting-
started/introduction-to-aspnet-identity
Code! MVC 5 App with Facebook, Twitter,
LinkedIn and Google OAuth2 Sign-on
http://www.asp.net/mvc/overview/security/creat
e-an-aspnet-mvc-5-app-with-facebook-and-
google-oauth2-and-openid-sign-on

Phát triển ứng dụng Web 31

You might also like