Passaporte do Laravel fornece erro 401 não autenticado
Estou usando o passaporte Laravel para autenticação de API, funciona perfeitamente quando o uso com um banco de dados, mas dá401
ao usar vários bancos de dados,
O que eu estou fazendo:
Eu tenho um banco de dados multilocatário, o banco de dados mestre tem usuários, funções e todas as tabelas OAuth.Quando crio um usuário com função de administrador, ele cria um novo banco de dados com nome de administrador, cria um sub DB com usuários, funções e toda a tabela OAuth.oauth_clients
do sub DB copia o token de concessão de senha e o token de acesso pessoal do DB mestre e insere no sub DB e também insereclient_id
nooauth_personal_access_clients
.Eu estou fazendo todos os procedimentos quepassport:install
comando faz. (Se não estiver faltando alguma coisa).
Quando eu faço login com credenciais do banco de dados mestre, ele funciona perfeitamente, o problema real começa quando eu faço login com credenciais do sub-banco de dados, posso obter o sub-banco de dados de um parâmetroclient_code
com o qual eu insiroemail
,password
durante o login.
Permite que eu entre no sub DB, mas recebo401 Unauthenticated
erro, obtenha o token de acesso durante o login e eu passoAuthentication
Cabeçalho comBearer
em cada solicitação após o login deAngular
frente.
Não sei o que estou perdendo aqui.
DBConnection Middleware
O middleware DBConnection define a conexão em todas as solicitações após o login,
public function handle($request, Closure $next)
{
if ( $request->method() != 'OPTIONS' ) {
$this->access_code = $request->header('access-code');
if ( $this->access_code != '' && $this->access_code != 'sa' ) {
app('App\Http\Controllers\Controller')->setDB(AppHelper::DB_PREFIX.$this->access_code);
} else {
app('App\Http\Controllers\Controller')->setDB(AppHelper::DB_DEFAULT);
}
}
return $next($request);
}
DBConnection
define o banco de dados padrão emdatabase.php
dinamicamente, para isso, eu estou chamandosetDB
método criado emController.php
setDB Controller.php
public function setDB($database='') {
$config = app()->make('config');
$connections = $config->get('database.connections');
$default_connection = $connections[$config->get('database.default')];
$new_connection = $default_connection;
$new_connection['database'] = $database;
$config->set('database.connections.'.$database, $new_connection);
$config->set('database.default', $database);
}
É possível usarpassport
com 2 DB diferente para o mesmo código?
Laravel 5.4
Passport 4.0
Angular 4.4
no front-end