一、安装

composer require laravel/passport

二、配置

三、登录获取Token
1、第一种方式,通过Http 去请求 /oauth/token,其实就相当于把 OAuth2.0 里获取Token所需的参数,根据配置放置,客户端用户只需要传入账号密码,服务器会自行把client_id和client_secret 以及用户的账号密码传入OAuth2.0中。

    $http = new Client();
    // 发送相关字段到后端应用获取授权令牌
    $response = $http->post(config('app.url') . '/oauth/token', [
        'form_params' => [
            'grant_type' => 'password',
            'client_id' => config('services.blog.appid'),
            'client_secret' => config('services.blog.secret'),
            'username' => $credentials['username'],
            'password' => $credentials['password'],
            'scope' => '*'
        ],
    ]);
     return response($response->getBody());

    // 或者

    $request = Request::create('/oauth/token', 'POST', [
        'grant_type' => 'password',
        'client_id' => config('services.blog.appid'),
        'client_secret' => config('services.blog.secret'),
        'username' => $request->username,
        'password' => $request->password,
    ]);

    return app()->handle($request);

2、第二种方式是自己进行数据验证,获取到对应的用户后,并绑定到Auth,再使用 $user->createToken()。

     $credentials = request(['email', 'password']);

    /*验证并绑定。*/
    //注意默认的Laravel Passport是使用RequestGuard 再套TokenGuard的,是不支持attempt方法的。 可以自行验证绑定
    // if(!Auth::attempt($credentials)){ 
    //    return response()->json([
   //         'message' =>'账号或密码错误'
  //      ], 401);
  //  }

    #   RequestGuard中没有验证绑定的方法,它是用于验证Request请求中的user是否合法
    

    $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();

标签: none

添加新评论