почему я получаю запрещенную ошибку только в одном сообщении Route? - PullRequest
0 голосов
/ 02 мая 2020

Я получаю ошибку, запрещенную CSRF. Однако csrf отлично работает в остальной части приложения, например, после выхода из системы, регистрации, удаления, удаления чего-либо и т. Д. /. Но когда я выполняю действие post только на одном маршруте "/ addProduct", я получаю сообщение об ошибке. Обратите внимание, что я генерирую токен CSRF перед объявлением маршрутов. Я прилагаю основной код файла и код переднего плана addProduct.

вот мой основной код файла, где я генерирую токен и включаю его во все маршруты


app.use(csrfProtection);
app.use(flash());


// USed to include token and isLoggedIn information to render in every page
app.use((req, res, next) => {
  res.locals.isLoggedIn = req.session.isLoggedIn;
  res.locals.csrfToken = req.csrfToken();
  res.locals.user= req.session.user;
  next();
});



// app.use((req, res, next) => {
//   // throw new Error('Sync Dummy');
//   if (!req.session.user) {
//     return next();
//   }});

app.use(multer({ storage: fileStorage,fileFilter:fileFilter }).single('image'));

app.use(shopRoute);
app.use(authRoute);
app.use('/admin',adminRoute);
app.use(errorController.get404);

Это код переднего плана для ADD_Product.e js здесь я также включаю скрытый ввод ... чтобы вернуть значение csrf, чтобы проверить его ...

   <form action="<%=path%>" enctype="multipart/form-data" method="POST">

    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" class="form-control" id="title" name="title" value="<%=product.title%>" >

      </div>
      <div class="form-group">
        <label for="price">Price</label>
        <input type="text" class="form-control" id="price" name="price" value="<%=product.price%>">
      </div>
      <div class="form-group">

        <input type="file" class="form-control-file" id="exampleFormControlFile1" name="image" value="<%=product.imageUrl%>">
      </div>
      <div class="form-group">
        <label for="exampleFormControlTextarea1">Description</label>
        <textarea class="form-control" id="exampleFormControlTextarea1" rows="3" name="description" value="<%=product.description%>"></textarea>
      </div>


      <% if (path=="/admin/edit") { %>
        <input type="hidden" name="productId" value="<%=product._id%>">
        <% }  %>

        <input type="hidden" name="_csrf" value="<%= csrfToken %>"> 
      <button type="submit" class="btn btn-primary btn-lg center">+ </button>
...