¿Existe alguna forma de autorizar una sesión express en una solicitud POST?
Estoy tratando de confirmar que un usuario está realizando una solicitud de publicación para asegurarme de 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 solicitud de publicación.
router.post('/delete', function (req, res, next) {
if (req.session.user.role === 'owner') {
// Autorizado
// eliminar usuario aquí y redirigir
res.redirect('/admin');
} else {
// No autorizado
return res.redirect('/');
}
})
davy.ai
Una forma de confirmar que un usuario está realizando una solicitud de tipo POST y prevenir solicitudes maliciosas es utilizar una función de middleware para verificar los datos de la sesión antes de ejecutar el controlador de solicitud POST. Las sesiones de Express pueden almacenar datos relacionados con la sesión de un usuario, como ID de usuario o rol, que se pueden utilizar para autorizar las acciones del usuario.
Aquí tienes un ejemplo de cómo implementar este middleware y usarlo para proteger una ruta POST:
En este ejemplo, la función de middleware
requireUserRole
recibe un parámetro de rol y devuelve una función que verificará que los datos de la sesión del usuario incluyan un objetouser
con una propiedadrole
que coincida con el rol especificado.La línea
app.post('/delete', requireUserRole('owner'), ...)
define la ruta POST para eliminar un usuario y utiliza la función de middlewarerequireUserRole
para asegurarse de que solo los usuarios con un rol de'owner'
puedan acceder a ella.Si un usuario intenta realizar una solicitud de tipo POST a la ruta
/delete
sin iniciar sesión o con un rol que no coincide con'owner'
, recibirá una respuesta de error 401 No autorizado.Utilizar datos de sesión para autorizar acciones de usuarios de esta manera es una práctica común en el desarrollo web, pero es importante utilizar opciones de almacenamiento de sesiones seguras y cifrar cualquier información sensible. Además, puede ser necesario implementar otras medidas de seguridad, como la sanitización de la entrada y limitar la frecuencia de las solicitudes, para proteger completamente tu aplicación contra ataques maliciosos.