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

471
Vistas
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 Respuestas
Responde la pregunta

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 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