首頁  >  文章  >  php教程  >  KoaHub基於Node.js開發的Koa JWT認證外掛程式碼資訊詳情

KoaHub基於Node.js開發的Koa JWT認證外掛程式碼資訊詳情

WBOY
WBOY原創
2016-10-17 09:12:051330瀏覽

Koa middleware that validates JSON Web Tokens and sets ctx.state.user (by default) if a valid token is provided.
wemall 開源微商城 ,微信商城,商城源碼,三級分銷,微生鮮,微水果,微外賣,微訂餐---專業的o2o系統
koa-jwt

Koa JWT 認證中間件.

koa-jwt

Koa 中間件,用於驗證 JSON Web 令牌並在提供有效令牌時設定 ctx.state.user (預設)。
此模組可讓您在 Koa (node.js) 應用程式中使用 JSON Web Tokens 來驗證 HTTP 請求。
請參閱這篇文章以獲得很好的介紹。
安裝$ npm 安裝 koa-jwt使用
JWT 驗證中間件使用 JWT 令牌對呼叫者進行身份驗證。如果令牌有效,則將使用解碼後的 JSON 物件設定 ctx.state.user (預設),以供後續中間件用於授權和存取控制。
令牌通常在 HTTP 標頭(授權)中提供,但也可以透過將 opts.cookie 選項設定為包含令牌的 cookie 的名稱來在 cookie 中提供。自訂令牌檢索也可以透過 opts.getToken 選項完成。提供的函數在正常的 Koa 上下文中調用,並應返回檢索到的令牌。
通常,您在 opts.secret 中提供單一共用金鑰,但另一種選擇是讓早期的中間件設定 ctx.state.secret,通常是每個要求。如果這個屬性存在,將會使用它來取代 opts.secret 中的屬性。

範例var koa = require('koa');<br> var jwt = require('koa-jwt');<br>  <br> var app = koa();<br>  <br> // 如果您不想向使用者揭露 koa-jwt 錯誤,則自訂 401 處理 <br> app.use(函數*(下一個){<br>   嘗試{<br>     產生下一個;<br>   } 趕上(錯誤){<br>     if (401 == err.status) {<br>       this.status = 401;<br>       this.body = '受保護的資源,使用授權標頭來取得存取';<br>     } 另外 {<br>       拋出錯誤;<br>     }<br>   }<br> });<br>  <br> // 未受保護的中間件<br> app.use(函數*(下一個){<br>   如果(this.url.match(/^/public/)){<br>     this.body = '不受保護';<br>   } 另外 {<br>     產生下一個;<br>   }<br> });<br>  <br> // 只有當 JWT 令牌有效時才能到達此行下方的中間件 <br> app.use(jwt({ secret: 'shared-secret' }));<br>  <br> // 受保護的中間件<br> app.use(函數*(){<br>   如果(this.url.match(/^/api/)){<br>     this.body = 'protectedn';<br>   }<br> });<br>  <br> app.listen(3000);
或者,您可以在某些條件下有條件地運行 jwt 中間件:var koa = require('koa');<br> var jwt = require('koa-jwt');<br>  <br> var app = koa();<br>  <br> // 只有當 JWT 令牌有效時才能到達此行下方的中間件 <br> // 除非 URL 以「/public」開頭 <br> app.use(jwt({ secret: 'shared-secret' }).unless({ path: [/^/public/] }));<br>  <br> // 未受保護的中間件<br> app.use(函數*(下一個){<br>   如果(this.url.match(/^/public/)){<br>     this.body = '不受保護';<br>   } 另外 {<br>     產生下一個;<br>   }<br> });<br>  <br> // 受保護的中間件<br> app.use(函數*(){<br>   如果(this.url.match(/^/api/)){<br>     this.body = 'protectedn';<br>   }<br> });<br>  <br> app.listen(3000);
有關 except 例外的更多信息,請查看 koa-unless。
您也可以新增passthrough 選項以始終產生next,即使沒有找到有效的授權標頭:app.use(jwt({ secret: 'shared-secret', passthrough: true }));這可以讓下游中間件根據是否設定了ctx.state.user 進行決策。
如果您希望使用另一個 ctx key 來解碼數據,只需傳入 key,如下所示:app.use(jwt({ secret: 'shared-secret', key: 'jwtdata' }));
這使得解碼後的資料可以作為 ctx.state.jwtdata.
您也可以指定受眾和/或發行者:app.use(jwt({ secret:   'shared-secret',<br>               為受眾:'http://myapi/protected',<br>               Issuer:   'http://issuer' }));如果 JWT 有過期時間(exp),則會進行檢查。
該模組還支援使用公鑰/私鑰對簽署的令牌。您可以使用公鑰指定緩衝區,而不​​是秘密:
var publicKey = fs.readFileSync('/path/to/public.pub');<br> app.use(jwt({ secret: publicKey }));
相關模組
jsonwebtoken — JSON Web Token 簽章與驗證
請注意,為了方便起見,koa-jwt 從上述模組中導出了簽名、驗證和解碼函數。
測驗
$ npm 安裝
$ npm 測試
作者
斯蒂安·格里托爾
積分
該程式碼很大程度上基於express-jwt。
Auth0
馬蒂亞斯·沃洛斯基
貢獻者
福克斯和xss
豆漿
tunnckoCore
格圖利奧jr
塞薩蘭德魯
麥可·韋斯特法爾
sc0ttyd
傑克龍
丹甘迺迪
許可證
麻省理工學院許可證

wemall開源微商城,微信商城,商城源碼,三級分銷,微生鮮,微水果,微外賣,微訂餐---專業的o2o系統
wemall網址:http://www.wemallshop.com

程式碼來源:http://js.koahub.com/home/feature/koa-jwt
KoaHub基於Node.js開發的Koa JWT認證外掛程式碼資訊詳情

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP 隨機字符下一篇:PHP 隨機字符