Passport OAuth认证,跨数据库读取token验证失败
我有两个数据库,A库用于用户名密码登录(项目的需要统一库)、B库是我业务库,以及生产token信息都是在B库,现在的问题是,
'scan_pay' => [ 'driver' => 'passport', 'provider' => 'phoneuser', ], 'phoneuser' =>[ 'driver' => 'eloquent', // 'model' => App\Models\ProviderModel::class, 'model' => App\Models\PsmsPhoneUserModel::class,//指向A数据库用户表 ], Route::middleware(['auth:scan_pay'])->group(function(){ Route::namespace('ScanPay')->prefix('default')->group(function() { Route::get('index',[DefaultController::class,'index']); }); }); //以上是配置信息,以下是生成token代码 $oClient = OClient::where('id',6)->first(); $results = $this->getTokenAndRefreshToken($oClient, '1508****32', '123456'); $data = [ 'code' => 100 ]; if($results['status']){ $data['data'] = [ 'staff_token' => $results['access_token'], 'refresh_token' => $results['refresh_token'] ]; $data['code'] = 200; } else { $data['message'] = $results['message']; } return json_encode(['code'=>200,'data'=>$data]);
这是生成token的,通过请求正常生成token。
但是在请求获取token时,报401。
经过测试,同在B库中生成token然后获取登录token信息没问题,跨库就一直验证不通过,倒是是哪里的原因,请高人指点?
本作品采用《CC 协议》,转载必须注明作者和本文链接
检查config目录下auth.conf providers model 是那个库。应该就能解决。
个人建议:用户中心,
令牌
要和账户信息
放在同一个数据库。config 目录下 auth.conf providers model 指定的是A库(用户库),因为A库存车用户信息,主要是java开发用,B库是laravel默认指向的库,统一用户只能跨库,就出现验证不通过的原因,不知道原因在哪里?
你这个类似 sso 单点登录