Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

416
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!