0

我正在制作一个 nodejs,angular2 应用程序。我想设置 JWT 身份验证,我正在使用 express-jwt 和 jsonwebtoken,我的所有路由和应用程序都按预期工作,只要我没有设置这样的 express-jwt 中间件。

app.use(expressJWT({secret: 'hey-hey'}).unless({path: ['/api/login', '/api/signup', '/home', '/signup', '/login', '/']}));

我收到以下错误:

GET http://localhost:3001/node_modules/core-js/client/shim.min.js 
login:13 GET http://localhost:3001/node_modules/zone.js/dist/zone.js 
login:14 GET http://localhost:3001/node_modules/reflect-metadata/Reflect.js 
login:15 GET http://localhost:3001/node_modules/systemjs/dist/system.src.js 
login:17 GET http://localhost:3001/systemjs.config.js 

基本上,我的应用程序只有通过身份验证才能访问这些路由。我还尝试将这些路由包含在除非:路径中,但这没有帮助。

如何使用 jwt 使这些路线可访问?

4

2 回答 2

0

使用以下之一

app.use('/api', expressJwt({ secret: config.secret}).unless({path: [/^\/api\/members\/confirm\/.*/]}));

或者你也可以给出除非一个函数:

var myFilter = function(req) {return true;}
app.use('/api', expressJwt({ secret: config.secret}).unless(myFilter));
于 2016-11-07T11:35:38.550 回答
0

我将以下内容添加到除非路径: /^\/node_modules\/.*/ , /^\/app\/.*/

它是一个正则表达式,它从 node_modules 和 app 目录中获取所有文件。

于 2016-11-07T11:32:25.813 回答