Ikh*_*jri 1 laravel laravel-passport
如何使用 Laravel 5.6 护照从其他表(访客,而不是用户)和不同的守卫(访客)制作登录 API 令牌。
当我使用默认的 laravel 身份验证表(用户)时它可以工作,但我需要从访问者表登录。
这是我的 auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'visitor' => [
'driver' => 'session',
'provider' => 'visitors',
],
'visitor-api' => [
'driver' => 'passport',
'provider' => 'visitors',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'visitors' => [
'driver' => 'eloquent',
'model' => App\Visitor::class,
],
],
Run Code Online (Sandbox Code Playgroud)
这是我的 API AuthController
public function login(Request $request)
{
$request->validate([
'email' => 'required|string|email',
'password' => 'required|string',
'remember_me' => 'boolean'
]);
if (!Auth::guard('visitor')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember))
return response()->json(['message' => 'Unauthorized'], 401);
$user = $request->user();
$tokenResult = $user->createToken('Personal Access Token');
$token = $tokenResult->token;
if ($request->remember_me)
$token->expires_at = Carbon::now()->addWeeks(1);
$token->save();
return response()->json([
'access_token' => $tokenResult->accessToken,
'token_type' => 'Bearer',
'expires_at' => Carbon::parse(
$tokenResult->token->expires_at
)->toDateTimeString()
]);
}
Run Code Online (Sandbox Code Playgroud)
当我在邮递员中测试时出现此错误消息
"message": "Call to a member function createToken() on null",
Run Code Online (Sandbox Code Playgroud)
使用$request->user()只会检索默认防护的用户。
要获得用户,您需要做的Auth::guard('visitor')->user()是获得用户。
然后,您将能够调用createToken()该用户,前提是您已将该HasApiTokens特征添加到模型中。
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |