json web token(縮寫 jwt)是目前最流行的跨域認證解決方案。是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準((rfc 7519).該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入(sso)場景。
//secreate_key 是我們儲存再服務端服務端的隨機字串,用來生成和效驗簽名的時候使用
// 1. headers
let header
// 2. claims
let payload=
// 3. signature
// 根據alg演算法與私有秘鑰進行加密得到的簽名字串;
// 這一段是最重要的敏感資訊,只能在服務端解密;
let sign =
hmacsha256
(base64urlencode
(header)
+"."
+base64urlencode
(payload)
,secreate_key
)
這裡為了做效驗,定義乙個簡單的sechema
1.新建乙個目錄,命名為amin
3.進入model目錄,新建user.js該檔案用來鏈結mongodb
// admin/model/user.js **
// 運算元據化邏輯
let mongoose =
require
('mongoose'
)let config =
require
('../config'
)let
= config
// 連線資料庫
mongoose.
connect
(db_url,
)// 骨架schema
let userschema =
newmongoose.schema()
// 建立乙個模型
let user = mongoose.
model
('user'
, userschema)
// 對外暴露模型
module.exports = user
// admin/config 內容
// 配置常量
module.exports =
思路如下,實現乙個簡單的使用者登陸註冊功能1.使用者註冊,
使用者登陸,
使用者跳轉效驗
// 後端伺服器
let express =
require
('express'
)let bodyparser =
require
('body-parser'
)let jwt =
require
('jwt-******'
)let config =
require
('./config'
)let
= config
// 返回乙個監聽函式
express()
// 中介軟體需要處理的內容
use(bodyparser.
json()
)let user =
require
('./model/user'
)// 需要實現的功能
// 處理跨域, 使用cors實現
use(
function
(req, res, next)
else})
// 1.使用者註冊
post
('/reg'
,async
function
(req, res, next)},
msg:
'註冊成功'})
}catch(e
))}}
)// 2.使用者登入
post
('/login'
,async
function
(req, res, next)
, secret)
res.
json(}
)}else)}
})// 4.公用效驗許可權中介軟體
letauth
=(req, res, next)
=>
catch(e
)}else
}// 使用者效驗可以通過 authorization
//3. 解析請求頭,拿到token, authorization: bearer token
post
('/order'
, auth,
async
function
(req, res, next))}
)listen
(3000
)
以上是簡單的jwt在node中的應用,當然我們還可以加入過期時間,別的什麼的,具體是自己的使用常見,我只拋磚引玉傳送夢: jwt-******
JWT在Django中的應用
json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取...
node 中jwt的使用token的加解密
nodejs express jwt let jwt require jwt 秘鑰 let secret laney let time 10 let tokenexpirestime 1000 60 60 24 7 token過期時間,毫秒為單位,7天 module.exports catch er...
jwt在nginx lua中的使用
nginx是乙個web伺服器,也可以用作反向 負載平衡器,郵件 和http快取。nginx可用於建立乙個api閘道器,該api閘道器以事件驅動的方式處理請求,並以快速,資源占用少的方式處理對伺服器的查詢。此外,它還降低了複雜性並通過降低效能來最大化效能提供api呼叫的平均響應時間。我們大多數人都已經...