1.在應(yīng)用目錄下執(zhí)行 php artisan make:auth 和 php artisan migrate命令,生成用戶(hù)登錄和注冊(cè)的所有東西侮东。
2.瀏覽器訪(fǎng)問(wèn) http://your-app.dev/register苫昌,進(jìn)行用戶(hù)注冊(cè)悲幅。
3.使用 Composer 包管理器安裝 Passport:
composer require laravel/passport
4.接下來(lái)览妖,在配置文件config/app.php的providers數(shù)組中注冊(cè) Passport 服務(wù)提供者:
Laravel\Passport\PassportServiceProvider::class,
Passport 服務(wù)提供著為框架注冊(cè)了自己的數(shù)據(jù)庫(kù)遷移目錄,所以在注冊(cè)之后需要遷移數(shù)據(jù)庫(kù),Passport 遷移將會(huì)為應(yīng)用生成用于存放客戶(hù)端和訪(fǎng)問(wèn)令牌的數(shù)據(jù)表:
php artisan migrate
5.接下來(lái)揍魂,需要運(yùn)行passport:install命令桨醋,該命令將會(huì)創(chuàng)建生成安全訪(fǎng)問(wèn)令牌(token)所需的加密鍵,此外现斋,該命令還會(huì)創(chuàng)建“personal access”和“password grant”客戶(hù)端用于生成訪(fǎng)問(wèn)令牌:
php artisan passport:install
運(yùn)行完這個(gè)命令后喜最,添加Laravel\Passport\HasApiTokenstrait 到App\User模型,該 trait 將會(huì)為模型類(lèi)提供一些輔助函數(shù)用于檢查認(rèn)證用戶(hù)的 token 和 scope:
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
接下來(lái)庄蹋,你需要在AuthServiceProvider的boot方法中調(diào)用Passport::routes方法瞬内,該方法將會(huì)注冊(cè)發(fā)布/撤銷(xiāo)訪(fǎng)問(wèn)令牌、客戶(hù)端以及私人訪(fǎng)問(wèn)令牌所必需的路由:
namespace App\Providers;
use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
}
}
最后限书,在配置文件config/auth.php中虫蝶,需要設(shè)置api認(rèn)證 guard 的driver選項(xiàng)為passport。這將告知應(yīng)用在認(rèn)證輸入的 API 請(qǐng)求時(shí)使用 Passport 的TokenGuard:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
6.密碼授權(quán)令牌
創(chuàng)建一個(gè)密碼發(fā)放客戶(hù)端
在應(yīng)用可以通過(guò)密碼授權(quán)頒發(fā)令牌之前倦西,需要?jiǎng)?chuàng)建一個(gè)密碼授權(quán)客戶(hù)端能真,你可以通過(guò)使用帶--password選項(xiàng)的passport:client命令來(lái)實(shí)現(xiàn)。如果你已經(jīng)運(yùn)行了passport:install命令调限,則不必再運(yùn)行這個(gè)命令:
php artisan passport:client --password
通過(guò)postman或者其他調(diào)試工具舟陆,請(qǐng)求http://your-app.com/oauth/token進(jìn)行授權(quán)误澳,授權(quán)成功返回想要的access_tokenhe 和refresh_token耻矮,最后測(cè)試。
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => 'taylor@laravel.com',
'password' => 'my-password',
'scope' => '',
],