Laravel Passport 不生成令牌
Laravel Passport doesn't generate tokens
我正在使用 Laravel 作为我的离子应用程序的后端,并使用 Laravel Passport 进行身份验证。当我尝试调用 Auth
的 createToken()
时,它显示 Call to undefined method
Login.ts:
login(event){
let dataJSON;
let formData = new FormData();
formData.append('email',event.target[0].value)
formData.append('password',event.target[1].value)
this.http.post(ENV.BASE_URL+'/auth', formData)
.subscribe((data) => {
console.log(data);
dataJSON = data;
}, (error) => {
console.log("Error!", error);
});
return false;
}
UserController.php:
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Carbon\Carbon;
use App\User;
class UserController extends Controller{
public function auth(Request $request){
$params = $request->only('email', 'password');
$username = $params['email'];
$password = $params['password'];
if(\Auth::attempt(['email' => $username, 'password' => $password])){
$token = \Auth::user()->createToken('Token'); //Throws Error here
return response()->json(['token'=>$token]);
}
return response()->json(['error' => 'Invalid username or Password']);
}
}
错误日志:
当我使用 Postman 进行测试时,它抛出以下错误
Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Auth\GenericUser::createToken() in file
D:\PsResources\DroidWorkspace\ZiPay\ZipServer\app\Http\Controllers\UserController.php on line 16
Stack trace:
1. Symfony\Component\Debug\Exception\FatalThrowableError->() D:\PsResources\DroidWorkspace\ZiPay\ZipServer\app\Http\Controllers\UserController.php:16
auth.php
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'table' => 'users',
],
'users' => [
'driver' => 'database',
'table' => 'users',
],
],
user.php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable{
use HasApiTokens, Notifiable;
....
}
试试这个
\Auth::user()->createToken('Token')->accessToken;
更新:
检查以下内容:
- 您是否将此 'Laravel\Passport\PassportServiceProvider::class,' 添加到 app.php 提供商数组中?
- 你是否将 api-> 驱动程序更改为 auth.php 中 guards 数组中的 'passport'?
这很奇怪,我删除了整个项目并重新开始一个,一切正常。
将这些添加到您的用户模型中
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, HasApiTokens
我的问题是用户模型使用了闭包,这是错误的,因为我使用的是护照令牌:
use Laravel\Sanctum\HasApiTokens;
我用正确的导入替换了我的导入:
use Laravel\Passport\HasApiTokens;
就用这个
$token = $user->createToken('authToken')->accessToken;
我正在使用 Laravel 作为我的离子应用程序的后端,并使用 Laravel Passport 进行身份验证。当我尝试调用 Auth
的 createToken()
时,它显示 Call to undefined method
Login.ts:
login(event){
let dataJSON;
let formData = new FormData();
formData.append('email',event.target[0].value)
formData.append('password',event.target[1].value)
this.http.post(ENV.BASE_URL+'/auth', formData)
.subscribe((data) => {
console.log(data);
dataJSON = data;
}, (error) => {
console.log("Error!", error);
});
return false;
}
UserController.php:
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
use Carbon\Carbon;
use App\User;
class UserController extends Controller{
public function auth(Request $request){
$params = $request->only('email', 'password');
$username = $params['email'];
$password = $params['password'];
if(\Auth::attempt(['email' => $username, 'password' => $password])){
$token = \Auth::user()->createToken('Token'); //Throws Error here
return response()->json(['token'=>$token]);
}
return response()->json(['error' => 'Invalid username or Password']);
}
}
错误日志: 当我使用 Postman 进行测试时,它抛出以下错误
Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined method Illuminate\Auth\GenericUser::createToken() in file
D:\PsResources\DroidWorkspace\ZiPay\ZipServer\app\Http\Controllers\UserController.php on line 16
Stack trace:
1. Symfony\Component\Debug\Exception\FatalThrowableError->() D:\PsResources\DroidWorkspace\ZiPay\ZipServer\app\Http\Controllers\UserController.php:16
auth.php
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'table' => 'users',
],
'users' => [
'driver' => 'database',
'table' => 'users',
],
],
user.php
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable{
use HasApiTokens, Notifiable;
....
}
试试这个
\Auth::user()->createToken('Token')->accessToken;
更新:
检查以下内容:
- 您是否将此 'Laravel\Passport\PassportServiceProvider::class,' 添加到 app.php 提供商数组中?
- 你是否将 api-> 驱动程序更改为 auth.php 中 guards 数组中的 'passport'?
这很奇怪,我删除了整个项目并重新开始一个,一切正常。
将这些添加到您的用户模型中
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, HasApiTokens
我的问题是用户模型使用了闭包,这是错误的,因为我使用的是护照令牌:
use Laravel\Sanctum\HasApiTokens;
我用正确的导入替换了我的导入:
use Laravel\Passport\HasApiTokens;
就用这个
$token = $user->createToken('authToken')->accessToken;