Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

418
Vistas
Cómo asegurar la API de Laravel (sanctum)

Tengo una aplicación laravel con un sistema de inicio de sesión, solo para pasantes y tengo un sitio web que obtiene y publica datos desde/hacia la aplicación laravel con una API

Así que quiero que solo mi sitio web pueda obtener/publicar datos desde/hacia la aplicación api -> laravel

Por ahora, he creado un usuario de inicio de sesión para la API con correo electrónico y contraseña. Sé que esa no es la manera correcta de hacerlo.

Y con estas credenciales de inicio de sesión, el sitio web obtiene un token de portador de la API (caducidad 10 min)

Con este token de portador (encabezado de llamada ajax), el sitio web llama a cada solicitud de API (obtener/publicar)

Código:

Llamada Ajax para obtener el token de portador:

 axios.post(data_source_url + "/auth/token", {'email' : 'api@email.de', 'password' : 'pw1'}).then((res) => { document.cookie = 'bearer=' + res.data + ';expires=' ... })

Rutas API de Laravel:

 Route::post('/auth/token', ['uses'=>'ApiController@getToken'])->name('api.getToken'); Route::get('/get', ['middleware'=>'auth:sanctum', 'uses'=>'Api\ApiController@read']); Route::post('/send', ['middleware'=>'auth:sanctum', 'uses'=>'Api\ApiController@send']);

así que me gustaría dejarlo así con autorización con un token de portador, pero cómo enviar y recibir un token de portador de la API de la manera correcta/ segura , porque la forma en que lo hago ahora con el inicio de sesión es totalmente insegura

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No debes dejar abierta tu ruta para conseguir el token. He escrito un artículo sobre este tema API REST de Laravel 8. Este enfoque le permite obtener un token al iniciar sesión primero con un usuario válido en la aplicación. Para su caso de uso, simplemente elimine la ruta de registro y el controlador, y podrá asegurarlo solo para su uso.

Ruta

 Route::post('/login', [ApiController::class, 'login']);

Controlador

 public function login(Request $request) { if (!Auth::attempt($request->only('email', 'password'))) { return response()->json(['message' => 'Incorrect e-mail or password'], 401); } $user = User::where('email', $request['email'])->firstOrFail(); $token = $user->createToken('auth_token')->plainTextToken; return response()->json([ 'access_token' => $token, 'token_type' => 'Bearer', ]); }

Me acabo de dar cuenta de que estás iniciando sesión para recuperar el portador. Relájese, los encabezados están encriptados usando HTTPS, por lo que es seguro hasta donde yo sé.

Para eliminar el usuario y la contraseña de texto sin formato en la llamada js, debe instalar dotenv emitiendo npm install dotenv --save

Ahora agregue a su archivo .env

 MY_API_USER=api@email.de MY_API_PASSWORD=pw1

Entonces necesitas agregar a tu archivo

 require('dotenv').config();

Entonces puede usar los datos confidenciales de esta manera

 axios.post(data_source_url + "/auth/token", {'email' : process.env.MY_API_USER, 'password' : process.env.MY_API_USER}).then((res) => { document.cookie = 'bearer=' + res.data + ';expires=' ... })

No compartirá su archivo .env y asegúrese de agregarlo a su .gitignore o similar, si no está allí.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda