search
HomePHP FrameworkLaravelDetailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)

这篇文章给大家分享的内容是关于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

Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)

7.然后在 AuthServiceProviderboot 方法中添加 Passport::roues();
Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)
8.最后,修改文件 config/auth.phpapi 部分的授权保护项( driver )改为 passport 。此调整会让你的应用程序在接收到 API 的授权请求时使用 Passport 的 TokenGuard 来处理
Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)
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
Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)
登录:http://gems.com/api/login
Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)

测试获取用户信息:http://gems.com/api/v1/passport
Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)

相关文章推荐:

laravel框架模型model的创建与使用方法

laravel5.5框架中视图间如何共享数据?视图间共享数据的两种方法(附代码)

The above is the detailed content of Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text). For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Full-Stack Development with Laravel: Managing APIs and Frontend LogicFull-Stack Development with Laravel: Managing APIs and Frontend LogicApr 28, 2025 am 12:22 AM

In Laravel full-stack development, effective methods for managing APIs and front-end logic include: 1) using RESTful controllers and resource routing management APIs; 2) processing front-end logic through Blade templates and Vue.js or React; 3) optimizing performance through API versioning and paging; 4) maintaining the separation of back-end and front-end logic to ensure maintainability and scalability.

Lost in Translation: Cultural Nuances and Misunderstandings in Distributed TeamsLost in Translation: Cultural Nuances and Misunderstandings in Distributed TeamsApr 28, 2025 am 12:22 AM

Totackleculturalintricaciesindistributedteams,fosteranenvironmentcelebratingdifferences,bemindfulofcommunication,andusetoolsforclarity.1)Implementculturalexchangesessionstosharestoriesandtraditions.2)Adjustcommunicationmethodstosuitculturalpreference

Measuring Connection: Analytics and Insights for Remote Communication EffectivenessMeasuring Connection: Analytics and Insights for Remote Communication EffectivenessApr 28, 2025 am 12:16 AM

Toassesstheeffectivenessofremotecommunication,focuson:1)Engagementmetricslikemessagefrequencyandresponsetime,2)Sentimentanalysistogaugeemotionaltone,3)Meetingeffectivenessthroughattendanceandactionitems,and4)Networkanalysistounderstandcommunicationpa

Security Risks in Distributed Teams: Protecting Data in a Remote WorldSecurity Risks in Distributed Teams: Protecting Data in a Remote WorldApr 28, 2025 am 12:11 AM

Toprotectsensitivedataindistributedteams,implementamulti-facetedapproach:1)Useend-to-endencryptionforsecurecommunication,2)Applyrole-basedaccesscontrol(RBAC)tomanagepermissions,3)Encryptdataatrestwithkeymanagementtools,and4)Fosterasecurity-consciousc

Beyond Email: Exploring Modern Communication Platforms for Remote CollaborationBeyond Email: Exploring Modern Communication Platforms for Remote CollaborationApr 28, 2025 am 12:03 AM

No, emailisnotthebostforremotecollaborationToday.Modern platformlack, Microsoft teams, Zoom, ASANA, AndTrelloFhertreal-Time Communication, Project management, Andintegrationfeaturesthancteamworkandefficiency.

Collaborative Document Editing: Streamlining Workflow in Distributed TeamsCollaborative Document Editing: Streamlining Workflow in Distributed TeamsApr 27, 2025 am 12:21 AM

Collaborative document editing is an effective tool for distributed teams to optimize their workflows. It improves communication and project progress through real-time collaboration and feedback loops, and common tools include Google Docs, Microsoft Teams, and Notion. Pay attention to challenges such as version control and learning curve when using it.

How long will the previous Laravel version be supported?How long will the previous Laravel version be supported?Apr 27, 2025 am 12:17 AM

ThepreviousversionofLaravelissupportedwithbugfixesforsixmonthsandsecurityfixesforoneyearafteranewmajorversion'srelease.Understandingthissupporttimelineiscrucialforplanningupgrades,ensuringprojectstability,andleveragingnewfeaturesandsecurityenhancemen

Leveraging Laravel's Features for Both Frontend and Backend DevelopmentLeveraging Laravel's Features for Both Frontend and Backend DevelopmentApr 27, 2025 am 12:16 AM

Laravelcanbeeffectivelyusedforbothfrontendandbackenddevelopment.1)Backend:UtilizeLaravel'sEloquentORMforsimplifieddatabaseinteractions.2)Frontend:LeverageBladetemplatesforcleanHTMLandintegrateVue.jsfordynamicSPAs,ensuringseamlessfrontend-backendinteg

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft