小编De_*_*_Jr的帖子

配置nest-cli.json以将非TS文件包含到dist文件夹中

我现在正在寻找解决方案几个小时:

我正在使用 NestJS 和 Nest Mailer 创建电子邮件服务。一切正常,直到我想在邮件中包含一个模板。这些模板是位于 src/mail/templates 中的 hbs 文件我知道 Nest 在编译时不包含非 TS 文件,因此:

我尝试配置 Nest-cli.json,添加了以下链接

    "compilerOptions": {
"assets":["**/*.hbs"],
"watchAssets": true,
} 
Run Code Online (Sandbox Code Playgroud)

或者

"assets": [
  { "include": "**/*.hbs","watchAssets": true },
]
Run Code Online (Sandbox Code Playgroud)

我的 Nest-cli.json 文件如下所示:

{
  "collection": "@nestjs/schematics",
  "sourceRoot": "src",
  "compilerOptions": {
  "assets": [
      { "include": "**/*.hbs","watchAssets": true },
    ]
}

}
Run Code Online (Sandbox Code Playgroud)

但没有任何内容被复制到 dist 文件夹中。所以我通过修改 package.json 来解决这个问题,添加了一个 cp 命令来手动执行此操作,但我认为这不是正确的方法...有人知道在资产中包含一些非 TS 文件吗

PS:hbs 用于车把(邮件模板)

感谢您的帮助 :)

compilation mailer handlebars.js typescript nestjs

9
推荐指数
1
解决办法
8957
查看次数

NestJS 的 csrf 令牌无效

我想用 NestJS 和 Quasar 实现 Csrf 保护。但我想我误解了一些东西......顺便说一句,我没有做SSR,所以我不会将表单从后面发送到视图。

这是 NestJs 后端代码:

    async function bootstrap() {
  const PORT = process.env.PORT;
  const app = await NestFactory.create(AppModule, {
    cors: true,
    bodyParser: false,
  });
  console.log(`your App is listening on port ${PORT}`);

  // Added Cookie-parser to user csurf packages
  // Prevent CSRF attack
  app.use(cookieParser());
  app.use(csurf({ cookie: true }));

  await app.listen(PORT);
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)

所以我只使用 CookieParser 和 csurf 包。在我的登录页面上,我调用“csrf 端点”只是为了将 cookie 发送到视图,并通过 post 调用(登录)将其发送回来。我仍然收到“无效的 csrf 令牌”和 CORS 错误,但不知道为什么......(请参见下面的屏幕),有什么建议可以让它发挥作用吗?

CSRF cookie

当我尝试登录时,浏览器中出现错误: CORS错误

登录时出现500错误

并且后台报错:

Nestjs csrf错误

如果我尝试失眠的请求,也会出现同样的错误。我认为 CSRF 令牌附加到“网络浏览器”以通过嵌套请求返回后端,那么为什么我仍然收到此错误?Insomnia 会根据正确的请求自动发送 cookie,因此令牌应该返回到后端。任何想法 ?问候

编辑:多次阅读文档后,似乎 CSRF …

security vue.js axios nestjs csrf-token

5
推荐指数
1
解决办法
4637
查看次数