搜尋
首頁php框架LaravelLaravel框架中的Possport Api的認證過程詳解(圖文)

這篇文章給大家分享的內容是關於Laravel框架中的Possport  Api的認證過程詳解(圖文),內容很詳細,有一定的參考價值,希望可以幫助到有需要的朋友。

1.Laravel透過傳統的登入表單已經讓使用者認證變得很簡單,但是API怎麼辦? API通常使用token進行認證並且在請求之間不維護session狀態。 Laravel使用Laravel Passport讓API認證變得輕而易舉,Passport基於Alex Bilbie維護的League OAuth2 server,可在數分鐘內為Laravel應用提供完整的OAuth2伺服器實作。

2.安裝

composer require laravel/passport

3.接下來,在設定檔config/app.phpproviders 陣列中註冊Passport 服務提供者:

 Laravel\Passport\PassportServiceProvider::class,

4.Passport 遷移將會為應用程式產生用於存放客戶端和存取權杖的資料表(遷移檔案位置/vendor/laravel/passport/database)( 創建相關的表)

 php artisan migrate

5.建立產生安全存取權杖時所用到的加密金鑰及私人存取和密碼存取用戶端。

 php artisan passport:install

注意:到這裡會有一個問題,就是當你註冊完之後再一次代用註冊接口是回報錯誤,在從新執行一下php artisan passport:install就OK了

6.Trait 加入到App\User 模型中,這個Trait 會提供這個模型一些輔助函數,用來檢查已認證使用者的令牌和使用作用於。

Laravel\Passport\HasApiTokens

Laravel框架中的Possport Api的認證過程詳解(圖文)

7.然後在AuthServiceProviderboot 方法中加入Passport::roues();
Laravel框架中的Possport Api的認證過程詳解(圖文)
8.最後,修改檔案config/auth.phpapi 部分的授權保護項目( driver )改為passport 。此調整會讓你的應用程式在接收到API 的授權請求時使用Passport 的TokenGuard 來處理
Laravel框架中的Possport Api的認證過程詳解(圖文)
9.增加測試路由api.php

Route::group(['namespace'=>'api'], function(){    
        // 无需认证路由    
        Route::match(['get','post'],'/login', 'UserController@login')->name('login');
        Route::post('/register', 'UserController@register');
        // 需认证路由    
        Route::group(['middleware' => 'auth:api'], function(){
        Route::get('/v1/passport', 'UserController@passport');
    });
    });

10.增加控制器

php artisan make:controller Api\UserController

<?php
namespace App\Http\Controllers\Api;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
class UserController extends Controller{
    public function __construct(){
        $this->content = array();
    }    
    public function login(){
        //dd(request(&#39;name&#39;));
        if(Auth::attempt([&#39;name&#39; => request(&#39;name&#39;), &#39;password&#39; => request(&#39;password&#39;)])) {            
        $user = Auth::user();            
        $this->content[&#39;token&#39;] =  $user->createToken(request(&#39;name&#39;))->accessToken;            
        $status = 200;
        } else {            
        $this->content[&#39;error&#39;] = "未授权";            
        $status = 401;
        }        
        return response()->json($this->content, $status);
    }    public function passport(){
        return response()->json([&#39;user&#39; => Auth::user()]);
    }    /**
     * 注册用户创建token
     */
    public function register(Request $request){
        $input = $request->all();        
        $validator = Validator::make($input, [
                    &#39;email&#39; => &#39;required|string|email|max:255|unique:users|min:4&#39;,            
                    &#39;password&#39; => &#39;required|string|min:6&#39;,
        ]);        
        if ($validator->fails())
         {            
            return response()->json([&#39;error&#39;=>$validator->errors()], 401);
        }        
        $input[&#39;password&#39;] = bcrypt($input[&#39;password&#39;]);        
        $user = User::create($input);        
        if( $user !==false){            
        $success[&#39;token&#39;] =  $user->createToken($input[&#39;name&#39;])->accessToken;            
        $success[&#39;email&#39;] =  $user->email;            
        $success[&#39;uid&#39;] =  $user->id;            
        return response()->json([&#39;error_code&#39;=>0,&#39;data&#39;=>$success], 200);
        }        
        return response()->json([&#39;error_code&#39;=>1,&#39;data&#39;=>$input], 401);
    }
}

11.透過postman進行簡單測試取得token  
註冊:
介面位址:http://gems.com/ api/register
Laravel框架中的Possport Api的認證過程詳解(圖文)
登入:http://gems.com/api/login
Laravel框架中的Possport Api的認證過程詳解(圖文)

測試取得使用者資訊:http://gems.com/ api/v1/passport
Laravel框架中的Possport Api的認證過程詳解(圖文)

相關文章推薦:

#laravel框架模型model的建立與使用方法

laravel5.5框架中視圖間如何共享資料?視圖間共享資料的兩種方法(附程式碼)

以上是Laravel框架中的Possport Api的認證過程詳解(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Laravel的替代方案用於全棧開發:比較框架Laravel的替代方案用於全棧開發:比較框架Apr 30, 2025 am 12:26 AM

若尋找Laravel替代品,Node.jswithExpress.js、Django、RubyonRails和ASP.NETCore都是可選方案。 1.Node.jswithExpress.js適合需要高性能和擴展性的項目。 2.Django適用於需要快速開發和全功能的項目。 3.RubyonRails適合快速原型和靈活開發。 4.ASP.NETCore適合高流量和跨平台開發,但學習曲線較陡。

項目管理強國:保持分佈式團隊的井井有條項目管理強國:保持分佈式團隊的井井有條Apr 30, 2025 am 12:20 AM

theKeyChallenGesinManagingDistributedTeamSareCommunicationGaps,TimeZonEdifferences,andTaskManagement.projectManagementToolShelPoverComethesechallengesby:1)增強CommunicationThrancyThrouncyThrouncyThroughthroughplatformslikeslikeSlikeSlikeSlackandMicrosoftTeams,2)ManagingTimeZonEdingiffererenses

從遠處管理:有效地領導和授權分佈式團隊從遠處管理:有效地領導和授權分佈式團隊Apr 30, 2025 am 12:12 AM

領導遠程團隊的關鍵在於使用技術、建立信任和製定個性化策略。 1)利用通信工具和任務管理系統確保任務分配和狀態更新清晰。 2)通過異步溝通避免倦怠,增強生產力。 3)通過授權和設定明確目標,激勵團隊成員。 4)關注團隊滿意度和協作,定期進行全面檢查。

技術問題:確保公平地訪問分佈式團隊成員的工具和資源技術問題:確保公平地訪問分佈式團隊成員的工具和資源Apr 29, 2025 am 12:40 AM

確保分佈式團隊成員公平獲取工具和資源的方法包括:1)使用低帶寬替代方案,如異步視頻或文本更新,解決連接問題;2)設立核心重疊工作時間,並提供靈活工作時間,管理時區差異;3)通過翻譯功能和文化意識培訓,適應不同文化需求。這些策略有助於創建一個包容和高效的遠程工作環境。

即時消息必備:在遠程設置中促進實時通信即時消息必備:在遠程設置中促進實時通信Apr 29, 2025 am 12:38 AM

ForenHancingRemoteCollaboration,AninStantMessagingToolMusThave:1)可靠性ForConsistentMessageDelivery,2)AnintuiveduserInterInterInterterfaceForeasyNavigation,3)Real-Timenotificationstostostostostostostostostostostostostostostostostostayupdated,4)SeamelesselessfileSlessFileSlessFileSlessFileSlesselessFileSleSlessForefliceForefliceDocumentExchange,5)集成

在分佈式團隊中工作時,您是否曾面臨任何挑戰?在分佈式團隊中工作時,您是否曾面臨任何挑戰?Apr 29, 2025 am 12:35 AM

Thebiggestchallengeofmanagingdistributedteamsiscommunication.Toaddressthis,usetoolslikeSlack,Zoom,andGitHub;setclearexpectations;fostertrustandautonomy;implementasynchronousworkpatterns;andintegratetaskmanagementwithcommunicationplatformsforefficient

新的Laravel版本有什麼安全性改進?新的Laravel版本有什麼安全性改進?Apr 29, 2025 am 12:17 AM

Laravel的最新版本在安全性方面有显著提升,包括:1.增强的CSRF保护,通过更robust的token验证机制;2.改进的SQL注入防护,通过增强的查询构建方法;3.更好的会话加密,确保用户数据安全;4.改进的认证系统,支持更细粒度的用户认证和多因素认证(MFA)的实现。

時區探戈:在全球勞動力中導航計劃衝突時區探戈:在全球勞動力中導航計劃衝突Apr 29, 2025 am 12:13 AM

TonavigatesChedulingConflictSinaglobalworkforce,Usetechnology,Ensathy and Strategicplanning:1)hosporlikeTimeBuddyorCalendlyForscheduling; 2)RotateMeetingTimeStoEnsurefairness; 3)spentCoreSurefair; 3)specoreCoreHoursibible foreverlap; 4)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。