nodejs cookie與session

來源:互聯網
上載者:User

標籤:function   刪除cookie   overwrite   代理   客戶   同名   密鑰   位元組   read   

cookie、session

cookie:在瀏覽器儲存一些資料,每次請求都會帶過來
*不安全、有限(4K)

session:儲存資料,儲存在服務端
*安全、無限

--------------------------------------------------------------------------------------------------------------

session:基於cookie實現的
*cookie中會有一個session的ID,伺服器利用sessionid找到session檔案、讀取、寫入

隱患:session劫持

cookie:

1.cookie空間非常小——省著用

2.安全性非常差——校正cookie是否被篡改過

用法:

a.發送cookie

res.secret=‘字串‘;  //秘鑰,對cookie加密res.cookie(名字, 值, {path: ‘/‘, maxAge: 毫秒, signed: true});
// path:路徑,maxAge:到期時間,signed:是否加密

b.讀取cookie

cookie-parser中介軟體server.use(cookieParser(‘秘鑰‘));server.use(function (){  req.cookies    未簽名版  req.signedCookies    簽名版});

c.刪除cookie

res.clearCookie(名字);

舉例:

const express=require(‘express‘);const cookieParser=require(‘cookie-parser‘);var server=express();//cookieserver.use(cookieParser(‘wesdfw4r34tf‘));server.use(‘/‘, function (req, res){  req.secret=‘wesdfw4r34tf‘;  res.cookie(‘user‘, ‘blue‘, {signed: true});  console.log(‘簽名cookie:‘, req.signedCookies)  console.log(‘無簽名cookie:‘, req.cookies);
 //res.clearCookie(‘user‘);
res.send(‘ok‘); }); server.listen(8080);
session:

cookie-session中介軟體

cookieSession(options)
name

要設定的Cookie的名稱,預設為session

keys

用於簽署和驗證Cookie值的鍵列表。

secret

如果keys沒有提供,將用該字串做標記。

Cookie Options

其他選項傳遞給 cookies.get() 和 cookies.set() ,允許你控制secure、path、domain,並簽署其他設定。

這些選項還可以包含以下任何內容(有關完整列表,請參閱 cookies模組文檔:

  • maxAge:表示Date.now()到期的毫秒數
  • expiresDate指示Cookie到期日期的對象(預設情況下在會話結束時到期)。
  • path:指示cookie路徑的字串(/預設情況下)。
  • domain:表示cookie的域的字串(無預設)。
  • sameSite:一個布爾值或字串,指示cookie是否為“相同網站”cookie(false預設情況下)。這可以設定為‘strict‘,,‘lax‘true(映射到‘strict‘)。
  • secure:一個布爾值,指示cookie是否僅通過HTTPS發送(false預設為HTTP true預設情況下為HTTPS)。如果這樣設定,true並且Node.js不是直接通過TLS串連,請務必閱讀如何在代理之後設定Express,否則Cookie可能無法正確設定。
  • httpOnly:一個布爾值,表示cookie是否僅通過HTTP(S)發送,並且不提供給用戶端JavaScript(true預設情況下)。
  • signed:一個布爾值,表示cookie是否要被簽名(true預設情況下)。如果是這樣的話,.sig還會發送一個帶附加尾碼的同名的另一個cookie ,一個27位元組的url-safe base64 SHA1值代表第一個Keygrip鍵的cookie-name = cookie-value的雜湊。此簽名密鑰用於在下次接收到Cookie時檢測篡改。
  • overwrite:一個布爾值,表示是否覆蓋以前設定的相同名稱的cookie(true預設情況下)。如果這是真的,在設定此Cookie時,將在同一請求中設定相同名稱的所有Cookie(不管路徑或域)是否從Set-Cookie頭部中過濾掉
 

1.寫入

server.use(cookieParser());server.use(cookieSession({  keys: [.., .., .., ..]}));

2.讀取

server.use(‘/‘, function (){  req.session});

2.刪除

delete req.session
req.session = null

舉例:

const express=require(‘express‘);const cookieParser=require(‘cookie-parser‘);const cookieSession=require(‘cookie-session‘);var server=express();//cookieserver.use(cookieParser());server.use(cookieSession({  name: ‘sess‘,  keys: [‘aaa‘, ‘bbb‘, ‘ccc‘],  maxAge: 2*3600*1000}));server.use(‘/‘, function (req, res){  if(req.session[‘count‘]==null){    req.session[‘count‘]=1;  }else{    req.session[‘count‘]++;  }  console.log(req.session);  res.send(‘ok‘);});server.listen(8080);

 

--------------------------------------------------------------------------------------------------------------

 

nodejs cookie與session

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.