我现在正在寻找解决方案几个小时:
我正在使用 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 用于车把(邮件模板)
感谢您的帮助 :)
我想用 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 令牌附加到“网络浏览器”以通过嵌套请求返回后端,那么为什么我仍然收到此错误?Insomnia 会根据正确的请求自动发送 cookie,因此令牌应该返回到后端。任何想法 ?问候
编辑:多次阅读文档后,似乎 CSRF …