如何设置带有angular2而不阻塞node_modules的express-jwt?

时间:2016-11-07 10:58:03

标签: node.js angular express-jwt

我正在创建一个nodejs,angular2 app。我想设置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使这条路线可以访问?

2 个答案:

答案 0 :(得分:0)

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

它是一个正则表达式,它接收来自node_modules和app目录的所有文件。

答案 1 :(得分: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));