Home  >  Article  >  PHP Framework  >  Detailed explanation of the authentication process of Possport Api in the Laravel framework (picture and text)

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

不言
不言Original
2018-08-04 15:00:113420browse

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

content = array();
    }    
    public function login(){
        //dd(request('name'));
        if(Auth::attempt(['name' => request('name'), 'password' => request('password')])) {            
        $user = Auth::user();            
        $this->content['token'] =  $user->createToken(request('name'))->accessToken;            
        $status = 200;
        } else {            
        $this->content['error'] = "未授权";            
        $status = 401;
        }        
        return response()->json($this->content, $status);
    }    public function passport(){
        return response()->json(['user' => Auth::user()]);
    }    /**
     * 注册用户创建token
     */
    public function register(Request $request){
        $input = $request->all();        
        $validator = Validator::make($input, [
                    'email' => 'required|string|email|max:255|unique:users|min:4',            
                    'password' => 'required|string|min:6',
        ]);        
        if ($validator->fails())
         {            
            return response()->json(['error'=>$validator->errors()], 401);
        }        
        $input['password'] = bcrypt($input['password']);        
        $user = User::create($input);        
        if( $user !==false){            
        $success['token'] =  $user->createToken($input['name'])->accessToken;            
        $success['email'] =  $user->email;            
        $success['uid'] =  $user->id;            
        return response()->json(['error_code'=>0,'data'=>$success], 200);
        }        
        return response()->json(['error_code'=>1,'data'=>$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