ошибка csfr при enctype="multipart/form-data" в форме
В общем суть проблемы в том что при использовании модуля multer я в форме пишу enctype="multipart/form-data" так как отправляю и сохраняю файл на сервере. При обычном использовании csrf токена (написав <input name="_csrf"valuer="{{csrf}}">) выдает ошибку. НО! если я напишу csrf токен в action формы (action="/upload/image?_csrf={{csrf}}") то все заработает (но это временное решения ибо способ не безопасный). Я не могу понять как сделать это решения безопасным. Подскажите, пожалуйста, что я делаю не так ?
Вот некоторый код из моего проекта:
Файл upload.js (Роутинг всех post запросов для сохраненияя файлов через multer)
let {Router} = require(`express`);
let Image = require(`../middleware/fileImg`);
let Audio = require(`../middleware/file`);
let mAudio = require(`../models/video`);
let time = require(`../public/time`);
let User = require(`../models/user`);
let router = Router();
//! Загрузка картинок на сервер через форму
router.post(`/image`, Image.single(`avatar`), async (req,res)=>{
let user = await User.findById(req.session.user._id);
user.avatarURL = `/${req.file.path}`;
user.login = req.body.login;
req.session.user = user;
await user.save();
await req.session.save();
res.redirect(`/profile`);
})
//! Загрузка аудио файлов на сервер через форму
router.post(`/audio`, Audio.single(`video`), (req,res)=>{
new mAudio({
src: `/${req.file.path}`,
created: time()
})
.save()
.then((s)=>{
console.log(s);
})
.catch((e)=>{
console.log(e);
})
res.redirect(`/music`);
})
module.exports = router;
А вот одна из форм через которую я отправляю файлы на клиент:
<div class="profile">
<form action="/upload/image?_csrf={{csrf}}" method="post" enctype="multipart/form-data">
{{#each user}}
{{#if this.avatarURL}}
<div class="avatarka">
<img src="{{this.avatarURL}}" alt="картинка">
</div>
<input name="avatar" type="file">
<div class="name">Никнейм</div>
<input name="login" type="text" value="{{this.login}}">
<div class="created">Создан: 15:16 20.07.2021</div>
<button type="submit">Сохранить</button>
{{/if}}
{{/each}}
</form>
</div>