Laravel ??: Laravel Passport? OAuth2 ??? ????? ??? ??????
Jun 13, 2023 am 10:33 AM? ??????? ??? ?? OAuth2? ?? ?? ???? ?? ???? ? ??? ?????. OAuth2? ?? ??? ?? ??? ???? ???? ? ?? ???? ?? ???? ????? ?????.
Laravel? ? ???? ?? ?? ???? ?? ?? PHP ? ?????? ????????. ? ???? ??? ? ??????? ???? ???? ? ??? ?? ??? ??? ??? ??? ????. Laravel Passport? Laravel? ?? ??? OAuth2 ????, ???? OAuth2 ??? ????? ? ??? ? ? ????. ? ???? Laravel Passport? ???? OAuth2 ??? ???? ??? ???????.
Laravel Passport ??
Laravel Passport? ???? OAuth2 ??? ???? ???? OAuth2 ?? ????? ????? ? ??? ?? OAuth2 ?? ?????. OAuth2 ?? ?? ??? ??? ?? ??? API ?, ????? ?? ??, ??? ??? ?? ???? ?????. Laravel Passport? ?? ?????, ?, ??? ???? ?? ??? API? ???? Laravel? ??? ?? ???? ???? ??? ? ????.
Laravel Passport ??
Laravel Passport ??? ?? ???? Composer? ???? ??? ? ????. ????? Laravel ?????? ????? ???? ?? ??? ?????:
composer require laravel/passport
???? Laravel Passport? ?? ??? ???? ???. Artisan ?? passport:install
? ???? ??? ? ????. ? ??? ??? ?????? ??????, ?? ??? ? ? ?????? ??? ??? ?????. ?? ??? ?? ??? ? ????. passport:install
進(jìn)行安裝。該命令將生成必要的數(shù)據(jù)庫遷移、一些加密密鑰和應(yīng)用程序訪問令牌。我們可以直接運(yùn)行以下命令:
php artisan passport:install
在運(yùn)行該命令后,您應(yīng)該看到類似以下的輸出:
Encryption keys generated successfully. Client ID: 1 Client secret: 9CrrluKEDJ3xvTLyHoSz3g3b5W3H4EBvLIS1G3V5
以上輸出中的客戶端ID和客戶端秘鑰是您在應(yīng)用程序中注冊O(shè)Auth2客戶端所需的信息??蛻舳藨{證使客戶端能夠獲取用戶令牌并訪問您的API服務(wù)器。
現(xiàn)在,我們已經(jīng)安裝了Laravel Passport,接下來讓我們來看看如何使用它來實(shí)現(xiàn)OAuth2認(rèn)證。
生成API令牌
Laravel Passport提供了一個API令牌用于每個用戶,該令牌可用于訪問受保護(hù)的API端點(diǎn)。要生成API令牌,請使用以下代碼:
$user = AppModelsUser::find(1); $token = $user->createToken('MyApp')->accessToken;
在這個例子中,我們使用createToken
方法來生成API令牌。我們需要提供一個標(biāo)識字符串,以便在未來能夠識別令牌。此方法將返回一個AccessToken實(shí)例,我們可以使用accessToken
屬性來獲取令牌字符串。
要使用API令牌來訪問受保護(hù)的API端點(diǎn),我們需要將令牌附加到HTTP請求的頭中。使用以下代碼:
$request->header('Authorization', 'Bearer '.$accessToken);
在這個例子中,我們使用請求頭Authorization來提供API令牌,其中令牌字符串通常以前綴“Bearer”開頭。
在請求頭中添加API令牌后,您可以訪問受保護(hù)的API端點(diǎn),并且服務(wù)器將使用API令牌來進(jìn)行身份驗證。
客戶端憑證
OAuth2客戶端憑證允許客戶端代表用戶從OAuth2服務(wù)器獲取訪問令牌。在Laravel Passport中,我們可以使用以下代碼來注冊O(shè)Auth2客戶端:
use LaravelPassportClient; $client = new Client; $client->name = 'MyApp'; $client->redirect = 'http://example.com/callback'; $client->save(); $client->createToken()->accessToken;
我們可以使用上述方法來創(chuàng)建OAuth2客戶端,并將客戶端ID和客戶端秘鑰用于獲取訪問令牌。
OAuth2授權(quán)碼
OAuth2授權(quán)碼是一種流程,允許用戶通過客戶端代表用戶請求OAuth2服務(wù)器獲取訪問令牌。Laravel Passport支持OAuth2授權(quán)碼流程,還提供了用于管理授權(quán)碼的API。例如,以下是如何創(chuàng)建OAuth2授權(quán)碼的示例:
use LaravelPassportPassport; use IlluminateHttpRequest; Route::get('/redirect', function (Request $request) { $query = http_build_query([ 'client_id' => 'client-id', 'redirect_uri' => 'http://example.com/callback', 'response_type' => 'code', 'scope' => '', ]); return redirect('http://example.com/oauth/authorize?'.$query); }); Route::get('/callback', function (Request $request) { $token = Request::create( 'http://example.com/oauth/token', 'POST', [ 'grant_type' => 'authorization_code', 'client_id' => 'client-id', 'client_secret' => 'client-secret', 'redirect_uri' => 'http://example.com/callback', 'code' => $request->code, ] ); $response = Route::dispatch($token); return json_decode((string) $response->getContent(), true); })->name('callback');
在上面的代碼中,我們首先使用http_build_query
rrreee
rrreee
? ??? ????? ID? ????? ????? ??????? ??? OAuth2 ????????. ?? ?? . ????? ?? ??? ???? ?????? ??? ??? ?? API ??? ???? ? ????. ?? Laravel Passport? ??????? ?? ???? OAuth2 ??? ???? ??? ???????. ????API ?? ??????Laravel Passport? ??? API ?????? ????? ? ??? ? ?? ? ????? API ??? ?????. API ??? ????? ?? ??? ?????. ??rrreee?? ? ????createToken
???? ???? API ??? ?????. ??? ??? ??? ? ??? ?? ???? ???? ???. ? ???? AccessToken ????? ???? accessToken
??? ?????? ?? ???? ??? ? ????. ????API ??? ???? ??? API ?????? ?????? HTTP ?? ??? ??? ???? ???. ?? ??? ?????. ??rrreee?? ? ???? ?? ?? Authorization? ???? API ??? ?????. ??? ?? ???? ????? ??? "Bearer"? ?????. ?????? ??? API ??? ???? ??? API ?????? ???? ? ??? ??? API ??? ???? ?????. ????????? ?? ??????OAuth2 ????? ?? ??? ???? ?????? ???? ???? OAuth2 ???? ??? ??? ?? ? ????. Laravel Passport??? ?? ??? ???? OAuth2 ?????? ??? ? ????: ??rrreee?? ?? ??? ???? OAuth2 ?????? ???? ????? ID? ????? ????? ???? ??? ??? ?? ? ????. ????OAuth2 ?? ??????OAuth2 ?? ??? ???? ?????? ?? ???? ???? OAuth2 ??? ???? ??? ??? ?? ? ??? ?? ???????. Laravel Passport? OAuth2 ?? ?? ????? ???? ?? ?? ??? ?? API? ?????. ?? ??, ??? OAuth2 ?? ??? ???? ??? ?? ????. ??rrreee?? ? ????? ?? http_build_query
??? ???? OAuth2 ??? ??? ?? ???? ?????. ?? ?? OAuth2 ??? ?????? ?? ???? ????? ?????. ???? ???? OAuth2 ??? ???????? ?? ???????. ?? ????? ??? API ?????? ????? ?? ??? ??? ? ?? ??? ??? ?????. ??????????? ???? Laravel Passport? ???? OAuth2 ?? ????? ????? ??? ?????. API ??? ????, ????? ?? ??? ????, OAuth2 ?? ?? ??? ???? ??? ?????. Laravel Passport? ??? OAuth2 ??? ???? ??? ? ?? ???? ?? API? ?????. Laravel ???????? OAuth2 ??? ???? Laravel Passport? ???? ???? ? ????. ??? ??? Laravel ??: Laravel Passport? OAuth2 ??? ????? ??? ??????? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP?? ?? ??? ???? ? ?? ?? ??? ????. 1. php.ini? ?? ??? ??; 2. ? ?? (? : Apache? Setenv ?? nginx? FastCGI_Param)? ??????. 3. PHP ?????? putenv () ??? ??????. ? ??? Php.ini? ????? ??? ???? ??? ???? ? ?? ??? ?? ???? ????? ???? Putenv ()? ?? ??? ?????. ?? ???? ?? ?? (? : php.ini ?? ? ?? ??)? ???? ????. ?? ?? ??? ??? ?? ??? ????? ???? ?? ????.

Laravel? ?? ??? ?? ?? ??? ?? ?? ??? ???? ??? ??????. ?? ???? ?? ??? ????? ? ???? I/O ?? ? ?? ?? ??? ???? ???? ??? ?? ? ????. 1. ?? ????? ?? ? ? ???????? ??? ????? ?? ???? ??????. 2. ??? ? ??? ?? ? ? PhPartisAnconfig? ?? ???????. 3. ?? ??? ??? ??? ???? ?? ?? ?? ???? ???? ????. 4. ?? ?? ??? ???? ?? ??? ??? .env ??? ???? ?? ???????.

PHP ????? ?? ??? ??? ? ??? ??? CI (Continuous Integration) ????? ???? ? ????. 1. DockerFile? ???? ?? ???, ?? ??, ??? ?? ? ?? ??? ???? PHP ??? ?????. 2. Gitlabci? ?? CI/CD ??? ???? .gitlab-ci.yml ??? ?? ??, ??? ? ?? ??? ???? ?? ??, ??? ? ??? ?????. 3. PHPUNIT? ?? ??? ??? ??? ???? ?? ?? ? ???? ???? ????????. 4. Kubernetes? ?? ?? ?? ??? ???? ?? .yaml ??? ?? ?? ??? ?????. 5. Dockerfile ??? ? ??? ??? ??????

Laravel? eloquentscopes? ?? ??? ??? ??? ?????? ?? ?? ??? ????? ?????. 1. ?? ??? ???? ???? ???? ???? Post :: published (); 2. ??? ??? ?? ??? ???? ???? ?? ??? ?? ?? ?? ??? ???? ???? ??? ?????? ??? ???? ???????. 3. ????? ?? ?? ?? ??? ??? ?? ?? ??? ?? ? ? ??? ?? ? ? ?? ?? ??? ?????. 4. ?? ??? ? ??? ?? ???? ? ??? ? ?? ??, ?? ??, ?? ???? ? ?? ?????????.

??? ?? ??? PHP ???? ?? ?? ??? ???? ?? ???????. RBAC (Role-Based Access Control) ??? ?? ???, ?? ? ??? ???? ??? ?? ?? ? ??? ?????. ?? ???? ??? ?????. 1. ???, ?? ? ??? ? ???? user_roles ? role_permissions? 3 ?? ?? ???; 2. $ user-> can ( 'edit_post')? ?? ???? ?? ?? ??? ?????. 3. ??? ???? ??? ??????. 4. ?? ??? ???? ?? ?? ?? ? ??? ? ???? ???? ?? ??? ? ?? ??? ?????. 5. ??? ??? ?? ?? ???? ?? ???? "??"? ??????.

CreateAhelpers.phpfileInapp/helperswithCustOmFunctionsikeFormatPrice, isactiveroute, andisAdmin.2.addTheFileTothe "??"sectionOfcomposer.jsonUnderAutoLoad.3.runcomposerDump-AUTOLOADTOMAKETHINGTICTIONSGLOBELYAVAILABLE.4.USETHEHELPERFUNCUNTION

?? ?? ?? : ?? ????? PHP? ?? Error_Log ()? ??? ? ????. ????? ???? ??? ?? ??? ?????? ???? ?? ??? ? ?? ??? ???? ??? ?? ???, ??, ?? ? ?? ? ?? ?? ??? ???? ??? ??????. 2. ??? ?? ?? : ??? ??? ??? ??? ? ??? ?? ??? ??? ?? ??? ??? ??????? ??????. MySQL/PostgreSQL? ???? ??? ? ???? ??????. Elasticsearch Kibana? ? ???/? ???? ?????. ???, ??? ?? ? ??? ? ?? ??? ?? ??????. 3. ?? ? ?? ????? : ??, ???, ?? ? ??? ??? ??????. Kibana? ?? ????? PHP ??? ?? ?? ?????? ???? ???? ?????? ???? ??? ? ?? ??? ??? ? ????.

??, ??, ?? ?? ? ?? ??? ???? ?? ??? ?? ? ?? ???? ?????. 2. ?? ???? ???? ?? ??? ??? SONGSTOMONY ? HASMANY ?? ??; 3. ?? ? ? ?? ? ?? ??? ????? (?? ???? ?? ??? ? ??). 4. ?? ? ?? ??? ???? ?? ??? ???? ?? ? ?? ??? ???? ?? ??? ?????. 5. ?? ???? ??? ?? (?? ??)? ???? ?? ????? ??????. 6. ?? ??? ?? ??? ???? Laravel Signature URL? ???? ??? ??????. 7. ? ?? ?? ? ? ?? ??? ?? ?? ??? ?? ??? ?????. ?????? ??, ?? ?? ??? ??????????.
