在passport
上使用Laravel 6
,它可以与users
一起正常工作,现在我想为passport
设置admins
,在这里我称为座席。因此,我以这种方式(基于this)做到了:
Route::middleware('auth:agent')->group(function () {
控制器:
return Auth::guard('agent')->user();
和auth.php:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
'hash' => false,
],
'agent' => [
'driver' => 'passport',
'provider' => 'agents',
],
],
...
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'agents' => [
'driver' => 'eloquent',
'model' => App\Agent::class,
],
],
所以我以用户身份登录,并设置api令牌并运行它:
$user = Auth::user();
return response()->json(['success' => $user], $this-> successStatus);
这将向我返回用户详细信息,并且工作正常,然后我以相同的令牌登录为admin,然后运行:
return Auth::guard('agent')->user();
它也向我返回代理商详细信息!与我用于api_token
的{{1}}相同。我用users
进行了全部测试。相反,它不应使用用户令牌重新运行代理详细信息。
答案 0 :(得分:0)
好吧,虽然我没有得到任何答案,但尝试自己解决该问题,但我进行了很多搜索,没有可用的解决方案对我有用。我决定将token
用作driver
(basic Laravel auth)作为管理员用户(agents)
所以我改变了:
'agent' => [
'driver' => 'token', // change passport to token
'provider' => 'agents',
'hash' => true,
],
根据那篇文章的第api_token
栏,这解决了我的问题。我认为passport
并不能解决此问题,您需要设置token
或session
才能解决此问题。