有没有办法在 laravel 的不同数据库中对用户进行身份验证?
Posted
技术标签:
【中文标题】有没有办法在 laravel 的不同数据库中对用户进行身份验证?【英文标题】:Is there a way to authenticate the user in different databases in laravel? 【发布时间】:2019-09-12 22:57:53 【问题描述】:我正在实现对不同数据库的访问,但是当使用中间件('auth:api')时,它说我没有经过身份验证,当我登录时我得到了令牌。
只有当数据库不是默认数据库时才会发生这种情况
我在 laravel 5.8 上
public function login(LoginRequest $request, $db)
Config::set("database.connections.mysql.database", $db);
if (Auth::attempt(['email' => request('email'), 'password' => request('password')]))
$this->user = Auth::user();
$this->user->token = $this->user->createToken('ControlEscolar')->accessToken;
$status = 200;
else
$this->user['error'] = "Unauthorized";
$status = 401;
return response()->json($this->user, $status);
public function userData($db)
Config::set("database.connections.mysql.database", $db);
$user = userData::whereUserId(Auth::user()->id)
->first();
return $user;
在登录功能上我得到了这个...
"id": 1,
"name": "name of user",
...
"token": "eyJ0eXAiO...CFU"
这样就可以了
但是在第二个用户数据中我得到了这个
"error":
"message": "Unauthenticated.",
"status_code": 500,
"debug":
"line": 67,
"file": "/Users/.../vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php",
"class": "Illuminate\\Auth\\AuthenticationException",
...
有人知道该怎么做,或者我做错了什么
【问题讨论】:
你能像protected $connection = 'connection-name';
一样在User
模型中设置你的连接并测试吗?
我已经尝试过了,它可以工作,问题是它只允许我使用一个 BD,另一个尝试是复制模型并添加你推荐的内容,但是 . ..该项目的想法是连接许多BD,所以不是最优的
您希望多个数据库的多个表代表一个模型?
是对的,数据库的结构是一样的,我只需要一个可以简单的连接所有的方法,Configure :: set ()
解决了,问题是认证的,是我的想象一下
也许这会指导你***.com/questions/46292391/…
【参考方案1】:
我像上面一样在路由文件上配置设置解决它:
$api->group(['prefix' => 'auth'], function (Router $api)
Config::set("database.connections.mysql.database", $db);
$api->post('singup', 'App\\Api\\V1\\Controllers\\SignUpController@signUp');
);
顺便说一句,我正在使用 dingo Api
【讨论】:
以上是关于有没有办法在 laravel 的不同数据库中对用户进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章