除非如何在 JWT 中使用通配符?
How do I use a wildcard in JWT unless?
我正在使用 express-jwt 来保护我的节点应用程序,并且想知道如何在 unless 参数中使用通配符。我的工作代码如下,我真正想做的是开放对路径以“/login”开头的任何内容的访问,这样我就不必列出每一个资源。当我将 '/login*' 添加到 unprotected 数组时,它最终以 401/unauthorized.
阻止/登录
作品:
// 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}) );
无效:
// 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}) );
正则表达式需要存在于引号之外:
var unprotected = [
/\/login*/,
/favicon.ico/
];
请注意,此时使用 express-unless 您不能在同一个配置数组中混合使用正则表达式和字符串,这就是为什么第二个参数需要使用正斜杠而不是引号。
您可以使用 path-to-regexp,而无需自己编写那些丑陋的正则表达式。
示例如下:
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 }));
我正在使用 express-jwt 来保护我的节点应用程序,并且想知道如何在 unless 参数中使用通配符。我的工作代码如下,我真正想做的是开放对路径以“/login”开头的任何内容的访问,这样我就不必列出每一个资源。当我将 '/login*' 添加到 unprotected 数组时,它最终以 401/unauthorized.
阻止/登录作品:
// 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}) );
无效:
// 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}) );
正则表达式需要存在于引号之外:
var unprotected = [
/\/login*/,
/favicon.ico/
];
请注意,此时使用 express-unless 您不能在同一个配置数组中混合使用正则表达式和字符串,这就是为什么第二个参数需要使用正斜杠而不是引号。
您可以使用 path-to-regexp,而无需自己编写那些丑陋的正则表达式。
示例如下:
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 }));