我正在创建一个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使这条路线可以访问?
答案 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));