Passport 登陆成功,token返回null?
1. 运行环境
win2012
1). 当前使用的 Laravel 版本?
Laravel9
//: <> (使用 php artisan --version
命令查看)
2). 当前使用的 php 版本?
PHP 版本:php 8.2
2. 问题描述?
控制器
<?php
namespace App\Http\Controllers\Api\Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Http;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Models\Admin;
class TokenController extends Controller
{
const Msg = [
'success' => 200,
'error' => -1,
'errorUser' => -11,
'errorPassword'=>-12,
];
private function checkData($request)
{
$request->validate([
'email' => 'required|email',
'password' => 'required|string',
]);
return ['email'=>$request->input('email'),'password'=>$request->input('password'),'passwordHash'=>Hash::make($request->input('password'))];
}
public function adminLogin(Request $request)
{
$data=$this->checkData($request);
if($data)
{
$userObj=DB::table('admin')->select('id','password','name','avatar','phone')->where('email','=',$data['email'])->first();
if($userObj)
{
if (Hash::check($data['password'], $userObj->password))
{
$token=$this->passwordToken($data['email'], $data['password'],3);
$userArr=['email'=>$data['email'],'name'=>$userObj->name,'avatar'=>$userObj->avatar,'phone'=>$userObj->phone];
return response()->json(['msg' => '登录成功', 'token'=>$token, 'user'=>$userArr, 'code'=> self::Msg['success']]);
}
else
{
return response()->json(['msg' => '密码错误', 'code'=> self::Msg['errorPassword']]);
}
}
return response()->json(['msg' => '账号不存在', 'code'=> self::Msg['errorUser']]);
}
}
public function userLogin(Request $request)
{
$data=$this->checkData($request);
if($data)
{
$userObj=DB::table('users')->select('id','password','name','avatar','phone')->where('email','=',$data['email'])->first();
if($userObj)
{
if (Hash::check($data['password'], $userObj->password))
{
$token=$this->passwordToken($data['email'], $data['password'],2);
$userArr=['email'=>$data['email'],'name'=>$userObj->name,'avatar'=>$userObj->avatar,'phone'=>$userObj->phone];
return response()->json(['msg' => '登录成功', 'token'=>$token, 'user'=>$userArr, 'code'=> self::Msg['success']]);
}
else
{
return response()->json(['msg' => '密码错误', 'code'=> self::Msg['errorPassword']]);
}
}
return response()->json(['msg' => '账号不存在', 'code'=> self::Msg['errorUser']]);
}
}
private function passwordToken($email,$password,$client_id)
{
$tokenObj=DB::table('oauth_clients')->where('id','=',$client_id)->first();
$response = Http::asForm()->post('http://api.example.com/oauth/token', [
'grant_type'=> 'password',
'client_id'=> $client_id,
'client_secret'=> $tokenObj->secret,
'username' => $email,
'password' => $password,
'scope' => '*',
]);
return $response->json();
}
/**
* Logout user (Revoke the token)
*
* @return [string] message
*/
public function logout(Request $request)
{
$request->user()->token()->revoke();
return response()->json([
'message' => 'Successfully logged out'
]);
}
}
模型
<?php
namespace App\Models;
use App\Support\HasRolesUuid;
use App\Support\HasSocialLogin;
use App\Support\UuidScopeTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Hash;
use Laravel\Passport\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;
/**
* Class User.
*/
class User extends Authenticatable
{
use Notifiable, UuidScopeTrait, HasFactory, HasApiTokens, HasRoles, SoftDeletes, HasSocialLogin, HasRolesUuid {
HasRolesUuid::getStoredRole insteadof HasRoles;
}
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = [
'deleted_at',
];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'uuid',
'email',
'phone',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
public function socialProviders()
{
return $this->hasMany(SocialProvider::class);
}
public static function create(array $attributes = [])
{
if (array_key_exists('password', $attributes)) {
$attributes['password'] = Hash::make($attributes['password']);
}
$model = static::query()->create($attributes);
return $model;
}
}
Postman返回

验证成功,但是token返回null?