2016-08-08 19 views
3

Ich verwende Express-JWT, um meine Knoten-Anwendung zu sichern, und frage mich, wie ich einen Platzhalter im Parameter außer es verwenden kann. Mein Arbeitscode ist unten, was ich wirklich gerne tun würde, ist den Zugang zu allem zu öffnen, das einen Pfad hat, der mit '/ login' beginnt, so dass ich nicht jede einzelne Ressource auflisten muss. Wenn ich '/ login *' dem ungeschützten Array hinzufüge, endet es, blockierend/LOGON mit einem 401/nicht autorisierten.Wie verwende ich einen Platzhalter in JWT, außer?

Works:

// routes open to all 
var unprotected = [ 
    '/login', 
    '/login/app/main.js', 
    'favicon.ico' 
]; 

// configure jwt 
var jwtCheck = jwt({ 
    secret: new Buffer(config.get('auth0.secret'), 'base64'), 
    audience: config.get('auth0.clientid') 
}); 

// insert jwt middleware 
app.use(jwtCheck.unless({path: unprotected})); 

funktioniert nicht:

// routes open to all 
var unprotected = [ 
    '/login*', 
    'favicon.ico' 
]; 

// configure jwt 
var jwtCheck = jwt({ 
    secret: new Buffer(config.get('auth0.secret'), 'base64'), 
    audience: config.get('auth0.clientid') 
}); 

// insert jwt middleware 
app.use(jwtCheck.unless({path: unprotected})); 
+0

Das Modul verwendet Express-es sei denn, so was Sie getan haben sollte funktionieren, können Sie die Version etc überprüfen? – ShrekOverflow

+0

Ich verwende die neuesten Versionen von express-ifon (0.3.0) und express-jwt (3.4.0) – Graham

Antwort

2

Die regexp muss außerhalb der Anführungszeichen existieren:

var unprotected = [ 
    /\/login*/, 
    /favicon.ico/ 
]; 

Beachten Sie, dass zu diesem Zeitpunkt mit Express-es sei denn, Sie können Regexp und Strings nicht in demselben Konfigurationsarray mischen, weshalb das zweite Argument Vorwärtsstriche ins haben muss Quotes.

0

Sie können path-to-regexp verwenden und Sie müssen diese hässlichen regExps nicht selbst schreiben.

Probe unter:

const pathToRegexp = require('path-to-regexp'); 

// Use JWT auth to secure the API 
const unprotected = [ 
    pathToRegexp('/login*'), 
    pathToRegexp('/favicon.ico') 
]; 

app.use(expressJwt({ secret: config.tokenSecret }).unless({ path: unprotected }));