1、sessionphp
session的中文翻譯是「會話」,當用戶打開某個web應用時,便與web服務器產生一次session。服務器使用session把用戶的信息臨時保存在了服務器上,用戶離開網站後session會被銷燬。這種用戶信息存儲方式相對cookie來講更安全,但是session有一個缺陷:若是web服務器作了負載均衡,那麼下一個操做請求到了另外一臺服務器的時候session會丟失。下面是php(phalcon框架)的例子web
以數組形式保存用戶登陸的信息(id、name、avatar),算法
1
2
3
4
5
|
$this
->session->set(
'userInfo'
,
array
(
'id'
=>
$admin
->id,
'name'
=>
$admin
->name,
'avatar'
=>
$admin
->avatar
));
|
session是全局的,在一個地方保存了,其餘地方就能夠用數組
1
2
3
4
|
if
(
$this
->session->has(
"userInfo"
)) {
$userInfo
=
$this
->session->get(
'userInfo'
);
return
$userInfo
;
}
|
2、cookie瀏覽器
cookie是保存在本地終端的數據。cookie由服務器生成,發送給瀏覽器,瀏覽器把cookie以kv形式保存到某個目錄下的文本文件內,下一次請求同一網站時會把該cookie發送給服務器。因爲cookie是存在客戶端上的,因此瀏覽器加入了一些限制確保cookie不會被惡意使用,同時不會佔據太多磁盤空間,因此每一個域的cookie數量是有限的。安全
cookie的組成有:名稱(key)、值(value)、有效域(domain)、路徑(域的路徑,通常設置爲全局:"\")、失效時間、安全標誌(指定後,cookie只有在使用SSL鏈接時才發送到服務器(https))。下面是一個簡單的js使用cookie的例子:服務器
用戶登陸時產生cookie:cookie
1
2
3
|
document.cookie =
"id="
+result.data[
'id'
]+
"; path=/"
;
document.cookie =
"name="
+result.data[
'name'
]+
"; path=/"
;
document.cookie =
"avatar="
+result.data[
'avatar'
]+
"; path=/"
;
|
使用到cookie時作以下解析:session
1
2
3
4
5
6
7
8
9
|
var
cookie = document.cookie;
var
cookieArr = cookie.split(
";"
);
var
user_info = {};
for
(
var
i = 0; i < cookieArr.length; i++) {
user_info[cookieArr[i].split(
"="
)[0]] = cookieArr[i].split(
"="
)[1];
}
$(
'#user_name'
).text(user_info[
' name'
]);
$(
'#user_avatar'
).attr(
"src"
, user_info[
' avatar'
]);
$(
'#user_id'
).val(user_info[
' id'
]);
|
3、token負載均衡
token的意思是「令牌」,是用戶身份的驗證方式,最簡單的token組成:uid(用戶惟一的身份標識)、time(當前時間的時間戳)、sign(簽名,由token的前幾位+鹽以哈希算法壓縮成必定長的十六進制字符串,能夠防止惡意第三方拼接token請求服務器)。還能夠把不變的參數也放進token,避免屢次查庫