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。

Passport OAuth认证,跨数据库读取token验证失败

但是在请求获取token时,报401。
经过测试,同在B库中生成token然后获取登录token信息没问题,跨库就一直验证不通过,倒是是哪里的原因,请高人指点?

本作品采用《CC 协议》,转载必须注明作者和本文链接
WenKaiYang
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6

检查config目录下auth.conf providers model 是那个库。应该就能解决。

1年前 评论
随波逐流

个人建议:用户中心, 令牌 要和 账户信息 放在同一个数据库。

1年前 评论
WenKaiYang (楼主) 1年前
WenKaiYang

config 目录下 auth.conf providers model 指定的是A库(用户库),因为A库存车用户信息,主要是java开发用,B库是laravel默认指向的库,统一用户只能跨库,就出现验证不通过的原因,不知道原因在哪里?

1年前 评论

你这个类似 sso 单点登录

1年前 评论
WenKaiYang

file经查询发现,aouth_token表的user_id字段只接收数字的值,而我A库中用户表id是字符串类型,导致该值为空,才验证不通过,更改模型$primaryKey指向不是id换成其他就解决了问题,不是跨库的问题。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!