[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Wardes Thiago de Carvalho Costa
Criador Wardes Thiago de Carvalho Costa 11/08/2020

Olá, houve alguma atualização do sanctum? Tento acessar a rota auth/me, mas api devolve sempre: "message": "Unauthenticated.".

Criador Wardes Thiago de Carvalho Costa 11/08/2020

Acho já sei o motivo, estou usando uma segunda conexão com banco de dados para autenticar, acho que por padrão o sanctum usa a conexão definida como padrão para realizar consultas. Há um modo de modificar isso?

Wardes Thiago de Carvalho Costa
Manager Carlos Ferreira 11/08/2020

Olá, Wardes!
Tudo bem?

O que seria essa segunda conexão que você se refere?

O Sanctum vai usar o modelo (tabela) relacionada para realizar a autenticação.

Carlos Ferreira
Criador Wardes Thiago de Carvalho Costa 11/08/2020

Fala mestre! Essa segunda conexão é um outro banco de dados, estou iniciando um projeto que preciso acessar dois bancos de dados, no começo, até os dados estarem sincronizados. Assim tenho um banco default (configurado no database.php), e outro que utilizo em alguns models, utilizando o atributo "protected $connection = outrobanco", conforme documentação do laravel.

Uma dessas tabelas é a users, que pego deste sengundo banco. O sanctum gera o token, salva na tabela normalmente, porém, na hora de checar a validade do token, não consegue, pois utiliza a conexão padrão, tanto que se eu mudo isso (ou seja, coloco a outra conexão como padrão), o sanctum funciona normalmente.

Sei que é errado mexer na pasta vendor, porém..., descobri que se eu colocar o atributo "protected $connection = 'outrobanco'" na classe ../vendor/laravel/sanctum/src/PersonalAccessToken.php, consigo corrigir isso, mas como dito, não é o ideal, ou aconselhável.

 Vi em alguns fóruns os gringos dizendo para recriar a referida classe (PersonalAccessToken.php) na raiz na pasta App e depois fazer um bind no AuthServiceProvider, tentei mas sem sucesso.

Assim, como posso fazer isso?? Daria para "publicar" este arquivo no projeto? Se seom como faria?

Agradeço desde já! 

 

 

 

Wardes Thiago de Carvalho Costa
Manager Carlos Ferreira 11/08/2020

Olá, Wardes!

Você também consegue alterar essa conexão usando middlewares (algo semelhante ao que fiz no curso de multi-tenancy multi-database aqui da plataforma).

Se quiser seguir essa linha que está, pode fazer assim.

No provider AuthServiceProvider (app/Providers/AuthServiceProvider.php) no método boot inclua:
Sanctum::usePersonalAccessClientModel(PersonalAccessClient::class);

Não esqueça de importar:
use Laravel\Sanctum\Sanctum;
use App\Services\Auth\SanctumPersonalAccessClient as PersonalAccessClient;

Em app/Services/Auth/ crie a classe SanctumPersonalAccessClient.php

Conteúdo dessa classe:
namespace App\Services\Auth;

use Laravel\Sanctum\PersonalAccessClient;

class SanctumPersonalAccessClient extends PersonalAccessClient
{
    protected $connection = 'outrobanco';
    protected $table = 'personal_access_tokens';
}

Carlos Ferreira
Criador Wardes Thiago de Carvalho Costa 11/08/2020

Beleza, deu certo! Só para constar, tive que fazer uma modificação na classe SanctumPersonalAccessClient.php. Fanzendo-a extender de PersonalAccessToken e não de PersonalAccessClient, ficando asssim:namespace App\Services\Auth;

 

use Laravel\Sanctum\PersonalAccessClient;

class SanctumPersonalAccessClient extends PersonalAccessToken

{

    protected $connection = 'outrobanco';

    protected $table = 'personal_access_tokens';

}

 

Mas isso foi bom pq me ajudou a entender melhor essa questão de providers no laravel. Mais uma vez, muito obrigado Mestre!

 

Wardes Thiago de Carvalho Costa
José Carlos dos Santos 11/08/2020

Olá Carlos, recebi a mesma messagem citada pelo amigo acime: 
{ "message": "Unauthenticated."}
Quero que funcione igual ao seu exemplo será que é possível sem criar a classe
SanctumPersonalAccessClient  acima?

José Carlos dos Santos
Manager Carlos Ferreira 11/08/2020

Olá, José!
Tudo bem?

Cria uma nova thread (ticket) para discutirmos a sua dúvida.

Posta o seu código no GitHub também.

No aguardo amigo.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!