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

465
Views
Problema de conexión de la base de datos de Laravel 7 sanctum

Estoy haciendo un proyecto para API usando el paquete Sanctum laravel. Necesita conectar 2 servidores de base de datos. Uno es MySQL para guardar algunos datos, incluido el usuario de inicio de sesión. Otro es SQL Server para obtener datos para la ruta API. No hay ningún problema al iniciar sesión en Sanctum en el servidor de base de datos MySQL que probé bien y recuperé el token. También la recuperación de datos de SQL Server funciona bien cuando recupero datos sin usar Laravel Sanctum.

Necesito iniciar sesión en el servidor de base de datos MySQL y recuperar datos del servidor de base de datos SQL Server. El problema al que me enfrento ahora es cómo y dónde definir la necesidad del servidor de base de datos MySQL para el middleware de autenticación de Sanctum.

Las conexiones son las siguientes:

 DB_MYSQL_CONNECTION=mysql DB_MYSQL_HOST=127.0.0.1 DB_MYSQL_PORT=3306 DB_MYSQL_DATABASE=api DB_MYSQL_USERNAME=root DB_MYSQL_PASSWORD= DB_SQLSRV_CONNECTION=sqlsrv DB_SQLSRV_HOST=127.0.0.1 DB_SQLSRV_PORT=1433 DB_SQLSRV_DATABASE=StoreData DB_SQLSRV_USERNAME=sa DB_SQLSRV_PASSWORD=

por esa ruta

 Route::middleware(['auth:sanctum'])->group(function () { Route::get('/items', 'APIController@getAllItems'); });

Lo ejecuto con el token de autenticación después de registrar el éxito, obtuve el siguiente error:

Illuminate\Database\QueryException: SQLSTATE[42S02]: [Microsoft][Controlador ODBC 11 para SQL Server][SQL Server]Nombre de objeto no válido 'personal_access_tokens'. (SQL: seleccione top 1 * de [personal_access_tokens] donde [token] = bd1de1df8bc2ac289dbd89f7d640a4c65ebc1b709b565ee500315ee710f12b62) en el archivo ...\vendor\laravel\framework\src\Illuminate\Database\Connection.php en la línea 671

personal_access_tokens y las tablas de usuarios están en la base de datos MySQL. ¿Puedo personalizar qué conexión de db es para Sanctum Auth? ¿y cómo?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Bueno, necesitas algo de personalización para el token de acceso personal. cree un modelo normal con el nombre de SanctumPersonalAccessClient (lo que quiera en este ejemplo) y en AuthServiceProvider.php escriba esto

 namespace App\Providers; use Laravel\Sanctum\Sanctum; use App\SanctumPersonalAccessClient as PersonalAccessClient; class AuthServiceProvider extends ServiceProvider { /** * The policy mappings for the application. * * @var array */ protected $policies = [ // ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); Sanctum::usePersonalAccessClientModel(PersonalAccessClient::class); } }

luego, en su modelo que acaba de crear, simplemente configure la conexión y el nombre de la tabla de esta manera:

 namespace App; use Laravel\Sanctum\PersonalAccessClient; class SanctumPersonalAccessClient extends PersonalAccessClient { protected $connection = 'my_custom_connection'; protected $table = 'personal_access_tokens'; }

enlace útil pero con pasaporte: https://github.com/laravel/passport/issues/247#issuecomment-424095961

over 4 years ago · Santiago Trujillo 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!