日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

node --- 实现session认证.

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node --- 实现session认证. 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

跨域認證的問題

互聯網服務離不開用戶認證.一般流程如下:
1、用戶向服務器發送用戶名和密碼。
2、服務器驗證通過后,在當前對話(session)里面保存相關數據,比如用戶角色、登錄時間等等。
3、服務器向用戶返回一個 session_id,寫入用戶的 Cookie。
4、用戶隨后的每一次請求,都會通過 Cookie,將 session_id 傳回服務器。
5、服務器收到 session_id,找到前期保存的數據,由此得知用戶的身份。

自己創建 Session

  • 注: session 是后端的內容
  • 具體思路如下:
  • 使用 session 空對象存 cookie 鍵值對.
  • 當第一次進入的時候,生成一個隨機數 sid,通過 cookie 傳遞 sid,并再后端使用session[sid] = msg的方式,記錄本次的值
  • 若非第一次進入,則需要從 cookie 中解析出 sid,進而得到該 sid 下的內容(有可能是用戶信息)
  • const session = {} http.createServer((req, res) => {const sessionKey = 'sid'if (req.url === '/favicon.ico') {return} else {const cookie = req.headers.cookieif (cookie && cookie.indexOf(sessionKey) > -1) {res.end('Come Back')console.log('cookie:', cookie)// 簡略寫法(未必具有通用性)const pattern = new RegExp(`${sessionKey}=([^;]+);?\S*`)const sid = pattern.exec(cookie)[1]console.log('session:', sid, session, session[sid])} else {const sid = (Math.random() * 9999999).toFixed()res.setHeader('Set-Cookie', `${sessionKey} = ${sid}`)session[sid] = { name: 'laowang' }res.end('hello cookie')}}}).listen(3000)
    • 說明:
  • 瀏覽器首次訪問,會生成sid保存在服務器中,并將sid返回給瀏覽器;
  • 瀏覽器遇到Set-Cookie: 后把后面的內容放到,cookie中;
  • 再次訪問相同網址時,瀏覽器會把cookie獲取,傳遞給服務器;
  • 服務器根據sid進行認證,返回對應的結果



  • koa實現session

    • 基本用法
    const koa = require("koa"); const app = new koa();const session = require("koa-session");app.keys = ['marron'];const SESSION_CONFIG ={key: 'marron rain',maxAge: 86400000,httpOnly: true,signed: true }app.use(session(SESSION_CONFIG, app));app.use(ctx =>{if(ctx.path === '/favicon.ico') return;let n = ctx.session.coung || 0;ctx.cession.count = ++n;ctx.body = `第${n}次訪問`; }); app.listen(3000);
    • 說明:
  • signed:true: 對生成的Value進行hash算法,(把不定長的值)摘要出一個定長的字符串,并且具有血崩效應.
  • 摘要: 明文可以得出密文, 但是密文不能反編譯成明文. 且密文依賴于明文, 明文一改變, 密文發生翻天覆地的變化.這樣可以防篡改.
  • 血崩效應: 明文發生很小的變化,密文變化很大,這樣很難破譯加密的規則.
  • 常見的hash: SHA、MD5

  • 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的node --- 实现session认证.的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。