Heim >php教程 >php手册 >Details zu den Codeinformationen des Koa JWT-Authentifizierungs-Plug-Ins, das von KoaHub auf Basis von Node.js entwickelt wurde

Details zu den Codeinformationen des Koa JWT-Authentifizierungs-Plug-Ins, das von KoaHub auf Basis von Node.js entwickelt wurde

WBOY
WBOYOriginal
2016-10-17 09:12:051358Durchsuche

Koa-Middleware, die JSON-Web-Tokens validiert und ctx.state.user (standardmäßig) festlegt, wenn ein gültiges Token bereitgestellt wird.
Wemall Open-Source-Mikro-Einkaufszentrum, WeChat-Einkaufszentrum, Mall-Quellcode, dreistufige Verteilung, Mikro-Frischelebensmittel, Mikro-Obst, Mikro-Imbiss, Mikro-Bestellung --- professionelles o2o-System
koa-jwt

Koa JWT-Authentifizierungs-Middleware.

koa-jwt

Koa-Middleware, die JSON-Web-Tokens validiert und ctx.state.user (standardmäßig) festlegt, wenn ein gültiges Token bereitgestellt wird.
Mit diesem Modul können Sie HTTP-Anfragen mithilfe von JSON-Web-Tokens in Ihren Koa-Anwendungen (node.js) authentifizieren.
Eine gute Einführung finden Sie in diesem Artikel.
Installieren$ npm install koa-jwtNutzung
Die JWT-Authentifizierungs-Middleware authentifiziert Anrufer mithilfe eines JWT-Tokens. Wenn das Token gültig ist, wird ctx.state.user (standardmäßig) mit dem dekodierten JSON-Objekt festgelegt, um von späterer Middleware für Autorisierung und Zugriffskontrolle verwendet zu werden.
Das Token wird normalerweise in einem HTTP-Header (Autorisierung) bereitgestellt, kann aber auch in einem Cookie bereitgestellt werden, indem die Option opts.cookie auf den Namen des Cookies gesetzt wird, das das Token enthält. Der benutzerdefinierte Tokenabruf kann auch über die Option opts.getToken erfolgen. Die bereitgestellte Funktion wird im normalen Koa-Kontext aufgerufen und sollte das abgerufene Token zurückgeben.
Normalerweise stellen Sie in opts.secret ein einzelnes gemeinsames Geheimnis bereit, aber eine andere Alternative besteht darin, eine frühere Middleware ctx.state.secret festzulegen, normalerweise pro Anfrage. Wenn diese Eigenschaft vorhanden ist, wird sie anstelle der in opts.secret.
verwendet
Beispielvar koa = require('koa');<code class="prettyprint linenums lang-php">var koa = require('koa');<br> var jwt = require('koa-jwt');<br>  <br> var app = koa();<br>  <br> // Custom 401 handling if you don't want to expose koa-jwt errors to users <br> app.use(function *(next){<br>   try {<br>     yield next;<br>   } catch (err) {<br>     if (401 == err.status) {<br>       this.status = 401;<br>       this.body = 'Protected resource, use Authorization header to get accessn';<br>     } else {<br>       throw err;<br>     }<br>   }<br> });<br>  <br> // Unprotected middleware <br> app.use(function *(next){<br>   if (this.url.match(/^/public/)) {<br>     this.body = 'unprotectedn';<br>   } else {<br>     yield next;<br>   }<br> });<br>  <br> // Middleware below this line is only reached if JWT token is valid <br> app.use(jwt({ secret: 'shared-secret' }));<br>  <br> // Protected middleware <br> app.use(function *(){<br>   if (this.url.match(/^/api/)) {<br>     this.body = 'protectedn';<br>   }<br> });<br>  <br> app.listen(3000); var jwt = require('koa-jwt');
 var koa = require('koa');<br> var jwt = require('koa-jwt');<br>  <br> var app = koa();<br>  <br> // Middleware below this line is only reached if JWT token is valid <br> // unless the URL starts with '/public' <br> app.use(jwt({ secret: 'shared-secret' }).unless({ path: [/^/public/] }));<br>  <br> // Unprotected middleware <br> app.use(function *(next){<br>   if (this.url.match(/^/public/)) {<br>     this.body = 'unprotectedn';<br>   } else {<br>     yield next;<br>   }<br> });<br>  <br> // Protected middleware <br> app.use(function *(){<br>   if (this.url.match(/^/api/)) {<br>     this.body = 'protectedn';<br>   }<br> });<br>  <br> app.listen(3000); var app = koa();
 
// Benutzerdefinierte 401-Behandlung, wenn Sie koa-jwt-Fehler nicht den Benutzern offenlegen möchten  app.use(function *(next){   Versuchen Sie es mit {     Als nächstes nachgeben;   } catch (err) {     if (401 == err.status) {       this.status = 401;       this.body = 'Geschützte Ressource, verwenden Sie den Autorisierungsheader, um Zugriff zu erhalten“;     } else {       throw err;     }   } });   // Ungeschützte Middleware  app.use(function *(next){   if (this.url.match(/^/public/)) {     this.body = 'unprotectedn';   } else {     Als nächstes nachgeben;   } });   // Die Middleware unterhalb dieser Zeile wird nur erreicht, wenn das JWT-Token gültig ist. app.use(jwt({ secret: 'shared-secret' }));   // Geschützte Middleware  app.use(function *(){   if (this.url.match(/^/api/)) {     this.body = 'protectedn';   } });   app.listen(3000); Alternativ können Sie die JWT-Middleware unter bestimmten Bedingungen bedingt ausführen:var koa = require('koa'); var jwt = require('koa-jwt');   var app = koa();   // Die Middleware unterhalb dieser Zeile wird nur erreicht, wenn das JWT-Token gültig ist. // es sei denn, die URL beginnt mit '/public'  app.use(jwt({ secret: 'shared-secret' }).unless({ path: [/^/public/] }));   // Ungeschützte Middleware  app.use(function *(next){   if (this.url.match(/^/public/)) {     this.body = 'unprotectedn';   } else {     Als nächstes nachgeben;   } });   // Geschützte Middleware  app.use(function *(){   if (this.url.match(/^/api/)) {     this.body = 'protectedn';   } });   app.listen(3000); Weitere Informationen zu Ausnahmen finden Sie unter koa-unless.Sie können auch die Passthrough-Option hinzufügen, um immer als Nächstes nachzugeben, auch wenn kein gültiger Autorisierungsheader gefunden wurde:app.use(jwt({ secret: 'shared-secret', passthrough: true }));Dadurch kann die Downstream-Middleware Entscheidungen basierend darauf treffen, ob ctx.state.user festgelegt ist.
Wenn Sie lieber einen anderen ctx-Schlüssel für die dekodierten Daten verwenden möchten, übergeben Sie einfach den Schlüssel, etwa so:app.use(jwt({ secret: 'shared-secret', key: 'jwtdata' }));
Dadurch stehen die dekodierten Daten als ctx.state.jwtdata.
zur Verfügung Sie können auch Zielgruppe und/oder Aussteller angeben:app.use(jwt({ secret:   'shared-secret',<code class="prettyprint linenums lang-php">app.use(jwt({ secret:   'shared-secret',<br>               audience: 'http://myapi/protected',<br>               issuer:   'http://issuer' }));               Zielgruppe: 'http://myapi/protected',
              Issuer:   'http://issuer' }));Wenn das JWT ein Ablaufdatum (exp) hat, wird es überprüft.
Dieses Modul unterstützt auch Token, die mit öffentlichen/privaten Schlüsselpaaren signiert sind. Anstelle eines Geheimnisses können Sie einen Puffer mit dem öffentlichen Schlüssel angeben:var publicKey = fs.readFileSync('/path/to/public.pub');<br> app.use(jwt({ secret: publicKey })); var publicKey = fs.readFileSync('/path/to/public.pub');<br> app.use(jwt({ secret: publicKey })); Verwandte Module

jsonwebtoken – JSON-Web-Token-Signatur und -Verifizierung
Beachten Sie, dass koa-jwt der Einfachheit halber die Funktionen zum Signieren, Verifizieren und Dekodieren aus dem oben genannten Modul exportiert. Tests

$ npm install
$ npm-Test Autor

Stian Grytøyr Credits

Dieser Code basiert größtenteils auf express-jwt.
Auth0
Matias Woloski Mitwirkende

Foxandxss
Sojagul
tunnckoCore
getuliojr
cesarandreu
michaelwestphal
sc0ttyd
Jackong
danwkennedy Lizenzen

Die MIT-Lizenz

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

代码来源:http://js.koahub.com/home/feature/koa-jwtDetails zu den Codeinformationen des Koa JWT-Authentifizierungs-Plug-Ins, das von KoaHub auf Basis von Node.js entwickelt wurde

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Zufällige PHP-ZeichenNächster Artikel:Zufällige PHP-Zeichen