Autorización
La autorización en Lumen permite controlar el acceso a determinadas rutas o recursos de la aplicación según permisos, roles o tokens de autenticación. Se implementa generalmente mediante middleware y puede integrarse con sistemas de autenticación como API tokens o JWT (JSON Web Tokens).
Autenticación y tokens
Para proteger rutas, es común utilizar API tokens que se envían en las solicitudes HTTP a través de cabeceras:
$router->get('/perfil', ['middleware' => 'auth', function () {
return 'Perfil del usuario';
}]);
El middleware auth verifica que la solicitud incluya un token válido antes de permitir el acceso.
Uso de middleware para autorización
Además de la autenticación básica, se puede implementar autorización basada en roles o permisos:
namespace App\Http\Middleware;
use Closure;
class CheckRole
{
public function handle($request, Closure $next, $role)
{
if ($request->user()->role !== $role) {
return response()->json(['mensaje' => 'No autorizado'], 403);
}
return $next($request);
}
}
Y aplicarlo en rutas o grupos de rutas:
$router->group(['middleware' => 'checkRole:admin'], function () use ($router) {
$router->get('/admin/dashboard', 'AdminController@index');
});
En este ejemplo, solo los usuarios con rol admin podrán acceder a las rutas del grupo.
Integración con controladores
Dentro de los controladores, también se puede comprobar permisos adicionales según la lógica de negocio:
public function editarUsuario($id)
{
$usuario = Usuario::find($id);
if (auth()->user()->cannot('editar', $usuario)) {
return response()->json(['mensaje' => 'Acceso denegado'], 403);
}
// Lógica de edición
}
Buenas prácticas y convenciones en autorización
- Mantener la autorización centralizada en middleware o políticas para no duplicar lógica en controladores.
- Usar nombres claros y consistentes para middleware de autorización (por ejemplo:
auth,checkRole,canEdit). - Validar siempre el acceso antes de ejecutar acciones sensibles o modificar datos.
- Evitar exponer información sensible en mensajes de error; usar respuestas genéricas como
403 Forbiddencuando corresponda. - Combinación de autenticación (verificación de identidad) y autorización (control de permisos) para garantizar seguridad completa.