Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

473
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda