【发布时间】:2021-08-27 10:28:30
【问题描述】:
我正在为我的 laravel API 项目使用动态数据库。我正在使用中间件来做到这一点。当我在 api rout 中间件中使用 auth:sanctum 时不起作用。但通常它工作正常。
路由>api.php
Route::group(['middleware'=>'database'], function() {
Route::group(['namespace' => 'App\Http\Controllers\Admin', 'middleware' => ['auth:sanctum']], function () {
Route::get('dashboard', function () {
return "conncted sucessfully to database ".\DB::connection()->getDatabaseName();
});
});
});
中间件 > Database.php
namespace App\Http\Middleware;
use Closure;
use App\Models\SoftClient;
class Database
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$route = app('router')->getRoutes()->match($request);
$prefix = $route->action['name'];
$s_client = SoftClient::where('url', $prefix)->first();
\Config::set('database.connections.multidomain.host', $s_client->db_host );
\Config::set('database.connections.multidomain.database', $s_client->db_name );
\Config::set('database.connections.multidomain.username', $s_client->db_username );
\Config::set('database.connections.multidomain.password', $s_client->db_password );
\DB::reconnect('multidomain');
return $next($request);
}
}
'database' => \App\Http\Middleware\Database::class,
我将这个添加到 Karnel.php
当我向仪表板发送请求时,出现以下错误。如果我不使用auth:sanctum,它工作正常。
Illuminate\Database\QueryException: SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)
【问题讨论】:
标签: laravel laravel-api