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?
 
           
         
                     
                    
 
         
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: