Код: Выделить всё
const jwt = require('jsonwebtoken');
const authMiddleware = (req, res, next) =\> {
const token = req.cookies.token;
if (!token) {
return res.status(401).json({
success: false,
message: "Unauthorized",
});
}
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = decoded;
next();
} catch (error) {
return res.status(401).json({
success: false,
message: "Unauthorized",
});
}
}
module.exports = {
authMiddleware,
}
Код: Выделить всё
const express = require('express');
const { createRefuge, getUserRefuge, deleteRefuge } = require('../controllers/refuge-controller.js');
const { authMiddleware } = require('../middlewares/auth-middleware.js');
const upload = require('../middlewares/storage-middleware.js');
const router = express.Router();
router.post('', authMiddleware, upload.single('bannerUrl'), createRefuge)
router.get('', authMiddleware, getUserRefuge)
router.delete('/:id', authMiddleware, deleteRefuge)
module.exports = router;
Код: Выделить всё
const express = require('express');
const authRoute = require('./routes/auth-route.js');
const refugeRoute = require('./routes/refuge-route.js');
const path = require('path');
const helmet = require('helmet');
const app = express();
const PORT = 8080;
const cors = require('cors');
const COOKIE_PARSER = require('cookie-parser');
const corsOptions = {
origin: process.env.CLIENT_URL || 'http://localhost:3000',
credentials: true,
methods: \['GET','POST','PUT','DELETE','PATCH','OPTIONS'\],
allowedHeaders: \['Content-Type','Authorization'\],
};
app.use(cors(corsOptions));
app.use(helmet())
app.use(express.json());
app.use(COOKIE_PARSER());
app.use('/api/auth', authRoute);
app.use('/api/refuge', refugeRoute);
app.use('/uploads', express.static(path.join(\__dirname, 'uploads')));
app.listen(PORT, () =\> {
console.log(`Server is running on http://localhost:${PORT}`);
});
Код: Выделить всё
deleteRefuge: async (id: number): Promise => { set({ isLoading: true }); try { await axios.delete(`http://localhost:8080/api/refuge/$%7Bid%7D%60, { withCredentials: true });
set({ refuge: null, isLoading: false });
} catch (error) {
if (axios.isAxiosError(error)) {
set({ error: error.response?.data.message, isLoading: false });
throw error.response?.data.message;
} else {
set({ error: 'An unexpected error occurred', isLoading: false });
throw 'Erreur lors de l\'inscription';
}
}
}
Когда я удаляю параметры «withCredential» (код реакции), проблема исчезает. Мне нужны эти учетные данные, потому что пользователь должен войти в систему, чтобы использовать этот маршрут. Это проблема с промежуточным программным обеспечением? С предварительным просмотром OPTION?
Подробнее здесь: https://stackoverflow.com/questions/797 ... express-js
Мобильная версия