拉拉维尔护照显示401未经认证的错误search_path(字符串)
我正在使用Laravel护照进行API身份验证,当我将其与一个数据库一起使用时,它可以完美地工作,但在使用多个数据库时会给出,401
我在做什么:
- 我有一个多租户数据库,主数据库有用户,角色和所有OAuth表。
- 当我创建具有管理员角色的用户时,它将使用管理员名称创建新数据库,它将创建具有用户,角色和所有OAuth表的子数据库。 的子 DB 将从主 DB 复制密码授予令牌和个人访问令牌并插入子 DB,并插入 到 .
oauth_clients
client_id
oauth_personal_access_clients
我正在做命令所做的所有过程。(如果我没有错过什么)。
passport:install
当我使用master DB的凭据登录时,它工作完美,真正的问题始于我使用子数据库的凭据登录时,我可以在登录时从我输入的参数中获取子数据库。
client_code
email
password
它允许我从子数据库登录,但我得到错误,在登录时获取访问令牌,并且在从前面登录后,我在每个请求上传递标头。
401 Unauthenticated
Authentication
Bearer
Angular
不知道我在这里错过了什么。
数据库连接中间件
DBConnection中间件在登录后为每个请求设置连接,
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
动态设置默认DB,为此,我正在调用在database.php
setDB
Controller.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);
}
对于相同的代码,是否可以与2个不同的数据库一起使用?passport
Laravel 5.4
Passport 4.0
Angular 4.4
在前端