Estoy tratando de confirmar que un usuario está haciendo una solicitud de publicación para que nadie pueda simplemente publicar en la URL y hacer algo malicioso. ¿Cómo puedo hacer esto usando express-session? ¿O hay una mejor manera de hacerlo?
He intentado esto, pero supongo que la sesión no existe en la publicación de requisitos.
router.post('/delete', function (req, res, next) { if (req.session.user.role === 'owner') { // Authorized // delete user here then redirect res.redirect('/admin'); } else { // Unauthorized return res.redirect('/'); } })Esto puede hacerse de muchas maneras. Una forma es enviar tokens en encabezados. Para realizar la autorización, puede utilizar middlewares. como sigue
Middleware de autenticación: -
const auth = (req, res, next) => { const token = req.header('auth-token'); if(!token) return res.status(401).send('Access denied. No token provided.'); try{ const decoded = jwt.verify(token, 'PRIVATE KEY'); // decoding token req.user = decoded; // add token details to req next(); }catch (ex){ res.status(400).send('Invalid Token'); } }Middleware de autorización: -
const admin = (req, res, next) => { if(!req.user.isAdmin) return res.status(403).send('Access denied.'); next(); }en el enrutador, simplemente puede usar el middleware que se encargará de la autenticación y la autorización
router.post('/delete', [auth, admin], function (req, res, next) { // do required operation })