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

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

不言
發布: 2018-08-04 15:00:11
原創
3600 人瀏覽過

這篇文章給大家分享的內容是關於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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板