如何使用 angular2 设置 express-jwt 而不阻塞 node_modules?

Posted

技术标签:

【中文标题】如何使用 angular2 设置 express-jwt 而不阻塞 node_modules?【英文标题】:How to setup express-jwt with angular2 not blocking node_modules? 【发布时间】:2017-03-20 16:44:43 【问题描述】:

我正在制作一个 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 使这些路由可访问?

【问题讨论】:

谢谢,帮了大忙。 请标记我的答案 【参考方案1】:

使用以下之一

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));

【讨论】:

来自这里:***.com/questions/30559158/…【参考方案2】:

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

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

【讨论】:

以上是关于如何使用 angular2 设置 express-jwt 而不阻塞 node_modules?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ExpressJS 服务器与 Angular2 集成

如何将 express 和 node 设置到现有的仅前端 Angular 2 项目中?

Angular2 CLI express server.ts 中的意外令牌导入

Express-session 和 express-socket.io-session 在 angular2 / typescript 环境中不起作用

Angular2 Webpack 和 Express

带有 Express js 的 Angular 2 cli