Laravel 實現 passport 使用者註冊登入

xiaosheng發表於2020-04-10
  • 不好意思,菜雞的我又要來水了

安裝passport

composer require laravel/passport ‘7.5.0’

  • 注:我安裝的時候沒有一開始沒有加版本號,然後就報瞭如下錯:
    Installation failed, reverting ./composer.json to its original content.
    加了版本號就好了
執行遷移

php artisan migrate

這一步我也不知道該怎麼說了

php artisan passport:install

修改檔案
  • User模型中,加入 use Laravel\Passport\HasApiTokens;然後在類中引用該traituse Notifiable,HasApiTokens;
  • Providers/AuthServiceProvider.phpboot方法中加入:
    Passport::routes();
  • 修改config/auth.php檔案中的guards中的api中的driverpassport
為了實現註冊後就直接登入,還需安裝guzzlehttp

版本可以自選

composer require guzzlehttp/guzzle '6.5.2'

註冊程式碼
class RegisterController extends Controller
{
    private $http;

    public function __construct(Client $http)
    {
        $this->http = $http;
    }

    public function register(RegisterRequest $request)
    {
        // 建立使用者
        User::create([
            'name' => $request->input('name'),
            'email' => $request->input('email'),
            'password' => bcrypt($request->input('password'))
        ]);

        // 獲取建立使用者的access_token作為登入憑證,登入的時候其實也是這樣獲取access_token的
        $response = $this->http->post('http://api.test/oauth/token', [
            'form_params' => [
                "grant_type" => "password",
                // 此處用的是使用者郵箱驗證
                "username" => $request->input('email'),
                "password" => $request->input('password'),
                // 此處是oauth_clients資料表中有兩個值,用的是id=2的值
                "client_id" => "2",
                "client_secret" => "LQ1a8TAUMjXw3CBpwGR2uLXlNWOuqJOG7Cpsnprq",
                // 設定api的範圍許可權全域性訪問
                "scope" => "*"
            ]
        ]);

        $token = json_decode((string)$response->getBody(), true);

        return response()->json([
            'token' => $token
        ], 201);
    }
}
  • 返回內容如下

laravel實現passport 使用者註冊登入

  • 在返回的內容中有access_token,可以拿他獲取使用者資訊

laravel實現passport 使用者註冊登入


en菜鳥的我就是這樣實現的

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章