【发布时间】:2020-07-06 19:18:47
【问题描述】:
我正在使用 Laravel 6.x 和护照包。 在安装此软件包之前,我在 App\User 中使用了 api_token。 现在我想用护照包对用户进行身份验证,但我遇到了这个错误,
调用未定义的方法 Illuminate\Auth\TokenGuard::attempt()
这是我的守卫:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
这是我的 authController:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class AuthController extends Controller
{
private $successStatus=200;
public function login(){
if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')-> accessToken;
return response()->json(['success' => $success], $this-> successStatus);
}
else{
return response()->json(['error'=>'Unauthorised'], 401);
}
}
}
【问题讨论】:
-
使用
session驱动程序。attempt方法来自 SessionGuard -
@TsaiKoga 看到这个网址请medium.com/techcompose/…
-
但是passport的guard没有
attempt的方法,你可以这样试试:Auth::guard('api')->attempt(['...']); Auth::guard('web')->attempt(['...']);。这里是SessionGuard's attempt-method。 Request Guard 和 TokenGuard -
我认为你提供的链接使用的是
'defaults' => ['guard' => 'web'...]