ホームページ  >  記事  >  php教程  >  Node.jsをベースにKoaHubが開発したKoa JWT認証プラグインのコード情報詳細

Node.jsをベースにKoaHubが開発したKoa JWT認証プラグインのコード情報詳細

WBOY
WBOYオリジナル
2016-10-17 09:12:051331ブラウズ

JSON Web トークンを検証し、有効なトークンが提供された場合に ctx.state.user (デフォルト) を設定する Koa ミドルウェア。
wemall オープンソース マイクロ モール、WeChat モール、モール ソース コード、3 レベルの流通、マイクロ生鮮食品、マイクロ フルーツ、マイクロ テイクアウト、マイクロ注文---プロフェッショナル O2O システム
コアjwt

Koa JWT 認証ミドルウェア

コアjwt

JSON Web トークンを検証し、有効なトークンが提供された場合に ctx.state.user (デフォルト) を設定する Koa ミドルウェア。
このモジュールを使用すると、Koa (node.js) アプリケーションで JSON Web トークンを使用して HTTP リクエストを認証できます。 詳しい紹介については、この記事を参照してください。

インストール$ npm install koa-jwt使用方法 JWT 認証ミドルウェアは、JWT トークンを使用して呼び出し元を認証します。トークンが有効な場合、ctx.state.user (デフォルト) にはデコードされた JSON オブジェクトが設定され、後のミドルウェアによる認可とアクセス制御に使用されます。
トークンは通常、HTTP ヘッダー (認可) で提供されますが、opts.cookie オプションをトークンを含む Cookie の名前に設定することで、Cookie で提供することもできます。カスタム トークンの取得は、opts.getToken オプションを通じて行うこともできます。提供された関数は通常の Koa コンテキストで呼び出され、取得されたトークンを返す必要があります。
通常、opts.secret で単一の共有シークレットを指定しますが、別の代替方法として、通常はリクエストごとに、以前のミドルウェアで ctx.state.secret を設定することもできます。このプロパティが存在する場合、opts.secret.
のプロパティの代わりに使用されます。

var koa = require('koa'); 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>     } else {<br>       エラーを投げます;<br>     }<br>   }<br> });<br>  <br> // 保護されていないミドルウェア <br> app.use(関数*(次){<br>   if (this.url.match(/^/public/)) {<br>     this.body = '保護されていない';<br>   } else {<br>     次に譲ります;<br>   }<br> });<br>  <br> // この行の下のミドルウェアは、JWT トークンが有効な場合にのみ到達します <br> app.use(jwt({ secret: 'shared-secret' }));<br>  <br> // 保護された ミドルウェア <br> app.use(function *(){<br>   if (this.url.match(/^/api/)) {<br>     this.body = 'protectedn';<br>   }<br> });<br>  <br> app.listen(3000);<br> あるいは、特定の条件下で jwt ミドルウェアを条件付きで実行することもできます:
var koa = require('koa'); 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>   if (this.url.match(/^/public/)) {<br>     this.body = '保護されていない';<br>   } else {<br>     次に譲ります;<br>   }<br> });<br>  <br> // 保護された ミドルウェア <br> app.use(function *(){<br>   if (this.url.match(/^/api/)) {<br>     this.body = 'protectedn';<br>   }<br> });<br>  <br> app.listen(3000);<br> 例外の詳細については、koa-unless を確認してください。
また、パススルー オプションを追加して、有効な Authorization ヘッダーが見つからなかった場合でも、常に次の処理を実行するようにすることもできます。app.use(jwt({ secret: 'shared-secret', passthrough: true }));これにより、下流のミドルウェアが ctx.state.user が設定されているかどうかに基づいて決定できるようになります。
デコードされたデータに別の ctx キーを使用したい場合は、次のようにキーを渡すだけです: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 トークンの署名と検証
koa-jwt は、便宜上、上記のモジュールから署名、検証、およびデコード関数をエクスポートすることに注意してください。
テスト
$ npm インストール
$npmテスト
作者
スティアン・グリトール
クレジット
このコードは主にexpress-jwtに基づいています
認証0
マティアス・ウォロスキー
寄稿者
きつね
ソグル
つんこコア

セサランドレウ マイケルウェストファル
ジャッコン
ダンケネディ

ライセンス
MITライセンス
wemall 开源微商城 、微信商城、商城源码、三级分销、微生鲜、微水果、微外卖、微订餐---专业的o2o系统
wemall地址:http://www.wemallshop.com

代来源:http://js.koahub.com/home/feature/koa-jwt


Node.jsをベースにKoaHubが開発したKoa JWT認証プラグインのコード情報詳細

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。