国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
第一步. 安裝 Laravel
第二步. 安裝 Laravel Passport 包
數(shù)據(jù)庫遷移" >第三步. 運行數(shù)據(jù)庫遷移
第四步. 生成秘鑰
第五步 . Passport 配置
第六步. 添加 API 路由
第七步: 創(chuàng)建控制器
測試" >測試
資源
首頁 后端開發(fā) php教程 使用 Laravel Passport 處理 API 認(rèn)證

使用 Laravel Passport 處理 API 認(rèn)證

Apr 03, 2024 pm 01:50 PM
jquery seo php編程 后端開發(fā) 作用域 addclass

使用 Laravel Passport 處理 API 認(rèn)證

php小編小新帶你探索使用Laravel Passport處理API認(rèn)證,Laravel Passport是一種完善的OAuth2服務(wù)器實現(xiàn),可幫助開發(fā)者輕松實現(xiàn)API認(rèn)證,并提供了許多便捷功能。通過本文,你將了解如何使用Laravel Passport來管理API用戶身份驗證,保障API接口的安全性。

第一步. 安裝 Laravel

我們需要用以下命令來創(chuàng)建一個最新的 Laravel 應(yīng)用,所以請打開終端執(zhí)行:

laravel new auth

第二步. 安裝 Laravel Passport 包

Laravel Passport 可以在幾分鐘內(nèi)為你的應(yīng)用實現(xiàn)一個完整的 OAuth2 服務(wù)器。

composer require laravel/passport

Passport 的遷移會創(chuàng)建你的應(yīng)用用來存儲客戶端和 Access Token 的表。

PHP artisan migrate

第四步. 生成秘鑰

此命令會創(chuàng)建秘鑰以用來生成安全的 Access Token。除此之外,它也會創(chuàng)建用來生成 Access Token 的 personal accesspassWord grant

php artisan passport:install

執(zhí)行完畢后,將 Laravel\Passport\HasApiTokens trait 添加到你的 App\User 模型中。這個 trait 會為模型添加一系列助手函數(shù)用來驗證用戶的秘鑰和作用域:

第五步 . Passport 配置

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use Notifiable, HasApiTokens;
}

接下來,你應(yīng)該在 AuthServiceProvider 中的 boot 方法中調(diào)用 Passport::routes 方法。這個方法會注冊必要的路由去頒發(fā)訪問令牌,撤銷訪問令牌,客戶端和個人令牌:

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    
    protected $policies = [
        &#39;App\Model&#39; => &#39;App\Policies\ModelPolicy&#39;,
    ];

    
    public function boot()
    {
        $this->reGISterPolicies();

        Passport::routes();
    }
}

最后,在 config/auth.php 配置文件中,你應(yīng)該設(shè)置 api 權(quán)限認(rèn)證守衛(wèi)的 driver 選項為 passport。當(dāng)需要權(quán)限認(rèn)證的 API 請求進來時會告訴你的應(yīng)用去使用 Passport's 的 TokenGuard。

&#39;guards&#39; => [
    &#39;WEB&#39; => [
        &#39;driver&#39; => &#39;session&#39;,
        &#39;provider&#39; => &#39;users&#39;,
    ],
    &#39;api&#39; => [
        &#39;driver&#39; => &#39;passport&#39;,
        &#39;provider&#39; => &#39;users&#39;,
    ],
],

第六步. 添加 API 路由

Laravel 提供了 routes/api.php 文件來給我們編寫 web 路由,因此在這個文件添加新的路由即可。

<?php

use Illuminate\Http\Request;

Route::group([
    &#39;prefix&#39; => &#39;auth&#39;
], function () {
    Route::post(&#39;login&#39;, &#39;AuthController@login&#39;);
    Route::post(&#39;signup&#39;, &#39;AuthController@signup&#39;);

    Route::group([
      &#39;middleware&#39; => &#39;auth:api&#39;
    ], function() {
        Route::get(&#39;loGout&#39;, &#39;AuthController@logout&#39;);
        Route::get(&#39;user&#39;, &#39;AuthController@user&#39;);
    });
});

第七步: 創(chuàng)建控制器

最后一步我們必須創(chuàng)建新的控制器和 api 方法。因此我們先創(chuàng)建 AuthController 并且把代碼寫進去:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use App\User;

class AuthController extends Controller
{
    
    public function signup(Request $request)
    {
        $request->validate([
            &#39;name&#39; => &#39;required|string&#39;,
            &#39;email&#39; => &#39;required|string|email|unique:users&#39;,
            &#39;password&#39; => &#39;required|string|confirmed&#39;
        ]);

        $user = new User([
            &#39;name&#39; => $request->name,
            &#39;email&#39; => $request->email,
            &#39;password&#39; => bcrypt($request->password)
        ]);

        $user->save();

        return response()->JSON([
            &#39;message&#39; => &#39;Successfully created user!&#39;
        ], 201);
    }

    
    public function login(Request $request)
    {
        $request->validate([
            &#39;email&#39; => &#39;required|string|email&#39;,
            &#39;password&#39; => &#39;required|string&#39;,
            &#39;remember_me&#39; => &#39;boolean&#39;
        ]);

        $credentials = request([&#39;email&#39;, &#39;password&#39;]);

        if(!Auth::attempt($credentials))
            return response()->json([
                &#39;message&#39; => &#39;Unauthorized&#39;
            ], 401);

        $user = $request->user();

        $tokenResult = $user->createToken(&#39;Personal Access Token&#39;);
        $token = $tokenResult->token;

        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);

        $token->save();

        return response()->json([
            &#39;access_token&#39; => $tokenResult->accessToken,
            &#39;token_type&#39; => &#39;Bearer&#39;,
            &#39;expires_at&#39; => Carbon::parse(
                $tokenResult->token->expires_at
            )->toDateTimeString()
        ]);
    }

    
    public function logout(Request $request)
    {
        $request->user()->token()->revoke();

        return response()->json([
            &#39;message&#39; => &#39;Successfully logged out&#39;
        ]);
    }

    
    public function user(Request $request)
    {
        return response()->json($request->user());
    }
}

現(xiàn)在我們已經(jīng)準(zhǔn)備好運行我們的示例了,運行下面的命令以快速運行:

php artisan serve

現(xiàn)在,我們可以使用 REST 客戶端工具來簡化測試,例如 Postman。我執(zhí)行測試你可以看見以下的截圖。

你要為這個 API 設(shè)置以下兩個頭信息:

Content-Type: application/json
X-Requested-With: XMLHttpRequest

使用 Laravel Passport 處理 API 認(rèn)證

注冊

使用 Laravel Passport 處理 API 認(rèn)證

登錄

使用 Laravel Passport 處理 API 認(rèn)證

登出

使用 Laravel Passport 處理 API 認(rèn)證

用戶

使用 Laravel Passport 處理 API 認(rèn)證


感謝閱讀!

資源

  • GitHub

  • Postman collections

以上是使用 Laravel Passport 處理 API 認(rèn)證的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
c語言中typedef struct的用法 c語言中typedef struct的用法 May 09, 2024 am 10:15 AM

typedef struct 在 C 語言中用于創(chuàng)建結(jié)構(gòu)體類型別名,簡化結(jié)構(gòu)體使用。它通過指定結(jié)構(gòu)體別名將一個新的數(shù)據(jù)類型作為現(xiàn)有結(jié)構(gòu)體的別名。優(yōu)點包括增強可讀性、代碼重用和類型檢查。注意:在使用別名前必須定義結(jié)構(gòu)體,別名在程序中必須唯一并且僅在其聲明的作用域內(nèi)有效。

js中閉包的優(yōu)缺點 js中閉包的優(yōu)缺點 May 10, 2024 am 04:39 AM

JavaScript 閉包的優(yōu)點包括保持變量作用域、實現(xiàn)模塊化代碼、延遲執(zhí)行和事件處理;缺點包括內(nèi)存泄漏、增加了復(fù)雜性、性能開銷和作用域鏈影響。

c++中的include什么意思 c++中的include什么意思 May 09, 2024 am 01:45 AM

C++ 中的 #include 預(yù)處理器指令將外部源文件的內(nèi)容插入到當(dāng)前源文件中,以復(fù)制其內(nèi)容到當(dāng)前源文件的相應(yīng)位置。主要用于包含頭文件,這些頭文件包含代碼中需要的聲明,例如 #include <iostream> 是包含標(biāo)準(zhǔn)輸入/輸出函數(shù)。

C++ 智能指針:全面剖析其生命周期 C++ 智能指針:全面剖析其生命周期 May 09, 2024 am 11:06 AM

C++智能指針的生命周期:創(chuàng)建:分配內(nèi)存時創(chuàng)建智能指針。所有權(quán)轉(zhuǎn)移:通過移動操作轉(zhuǎn)移所有權(quán)。釋放:智能指針離開作用域或被明確釋放時釋放內(nèi)存。對象銷毀:所指向?qū)ο蟊讳N毀時,智能指針成為無效指針。

C++ 智能指針:從基礎(chǔ)到高級 C++ 智能指針:從基礎(chǔ)到高級 May 09, 2024 pm 09:27 PM

智能指針是C++專用指針,能夠自動釋放堆內(nèi)存對象,避免內(nèi)存錯誤。類型包括:unique_ptr:獨占所有權(quán),指向單一對象。shared_ptr:共享所有權(quán),允許多個指針同時管理對象。weak_ptr:弱引用,不增加引用計數(shù),避免循環(huán)引用。使用方法:使用std命名空間的make_unique、make_shared和make_weak創(chuàng)建智能指針。智能指針在作用域結(jié)束時自動釋放對象內(nèi)存。高級用法:可以使用自定義刪除器控制對象釋放方式。智能指針可有效管理動態(tài)數(shù)組,防止內(nèi)存泄漏。

c語言函數(shù)名定義 c語言函數(shù)名定義 Apr 03, 2025 pm 10:03 PM

C語言函數(shù)名定義包括:返回值類型、函數(shù)名、參數(shù)列表和函數(shù)體。函數(shù)名應(yīng)清晰、簡潔、統(tǒng)一風(fēng)格,避免與關(guān)鍵字沖突。函數(shù)名具有作用域,可在聲明后使用。函數(shù)指針允許將函數(shù)作為參數(shù)傳遞或賦值。常見錯誤包括命名沖突、參數(shù)類型不匹配和未聲明的函數(shù)。性能優(yōu)化重點在函數(shù)設(shè)計和實現(xiàn)上,而清晰、易讀的代碼至關(guān)重要。

PHP應(yīng)用程序中的內(nèi)存泄露:原因、檢測和解決 PHP應(yīng)用程序中的內(nèi)存泄露:原因、檢測和解決 May 09, 2024 pm 03:57 PM

PHP內(nèi)存泄露是指應(yīng)用程序分配內(nèi)存后未能釋放,導(dǎo)致服務(wù)器可用內(nèi)存減少和性能下降。原因包括循環(huán)引用、全局變量、靜態(tài)變量和擴展。檢測方法有Xdebug、Valgrind和PHPUnitMockObjects。解決步驟為:識別泄漏源、修復(fù)泄漏、測試和監(jiān)控。實戰(zhàn)舉例說明了循環(huán)引用導(dǎo)致的內(nèi)存泄露,以及通過析構(gòu)函數(shù)打破循環(huán)引用以解決問題的具體方法。

oracle游標(biāo)關(guān)閉怎么解決 oracle游標(biāo)關(guān)閉怎么解決 Apr 11, 2025 pm 10:18 PM

解決 Oracle 游標(biāo)關(guān)閉問題的方法包括:使用 CLOSE 語句顯式關(guān)閉游標(biāo)。在 FOR UPDATE 子句中聲明游標(biāo),使其在作用域結(jié)束后自動關(guān)閉。在 USING 子句中聲明游標(biāo),使其在關(guān)聯(lián)的 PL/SQL 變量關(guān)閉時自動關(guān)閉。使用異常處理確保在任何異常情況下關(guān)閉游標(biāo)。使用連接池自動關(guān)閉游標(biāo)。禁用自動提交,延遲游標(biāo)關(guān)閉。

See all articles