详解laravel安装使用Passport(Api认证)


Posted in PHP onJuly 27, 2018

Laravel通过传统的登录表单已经让用户认证变得很简单,但是API怎么办?API通常使用token进行认证并且在请求之间不维护session状态。Laravel使用Laravel Passport让API认证变得轻而易举,Passport基于Alex Bilbie维护的League OAuth2 server,可以在数分钟内为Laravel应用提供完整的OAuth2服务器实现。

中文文档

http://laravelacademy.org/post/6813.html

安装

composer require laravel/passport

接下来,在配置文件 config/app.php 的providers 数组中注册 Passport 服务提供者:

Laravel\Passport\PassportServiceProvider::class,

Passport 迁移将会为应用生成用于存放客户端和访问令牌的数据表 (迁移文件位置/vendor/laravel/passport/database)

php artisan migrate

创建生成安全访问令牌时用到的加密密钥及私人访问和密码访问客户端。

php artisan passport:install

Trait 添加到 App\User 模型中,这个 Trait 会给这个模型提供一些辅助函数,用于检查已认证用户的令牌和使用作用于。

Laravel\Passport\HasApiTokens

详解laravel安装使用Passport(Api认证)

然后在 AuthServiceProvider 的 boot 方法中添加 Passport::roues();

详解laravel安装使用Passport(Api认证)

最后,修改文件 config/auth.php 中 api 部分的授权保护项( driver )改为 passport 。此调整会让你的应用程序在接收到 API 的授权请求时使用 Passport 的 TokenGuard 来处理

'guards' => [
    'web' => [
      'driver' => 'session',
      'provider' => 'users',
    ],

    'api' => [
      'driver' => 'passport',
      'provider' => 'users',
    ],
  ],

增加测试路由

Route::group(['namespace' => 'api'], function () {
  Route::post('/login', 'UserController@login');
});
Route::group(['middleware' => 'auth:api', 'namespace' => 'api'], function() {
  Route::get('V1/test/passport', 'UserController@passport');
});

增加控制器

php artisen make:controller UserController
<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;

class UserController extends Controller
{
  public function __construct()
  {
    $this->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('Pi App')->accessToken;
      $status = 200;
    } else {

      $this->content['error'] = "未授权";
       $status = 401;
    }
     return response()->json($this->content, $status);
  }
  public function passport()
  {
    return response()->json(['user' => Auth::user()]);
  }
}

通过postman进行简单测试获取token

详解laravel安装使用Passport(Api认证)

详解laravel安装使用Passport(Api认证)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
PHP中ini_set和ini_get函数的用法小结
Feb 18 PHP
php生成shtml类用法实例
Dec 09 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
PHP中list方法用法示例
Dec 01 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
php数据序列化测试实例详解
Aug 12 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 PHP
Ubuntu彻底删除PHP7.0的方法
Jul 27 #PHP
PHP实现的CURL非阻塞调用类
Jul 26 #PHP
PHP等比例压缩图片的实例代码
Jul 26 #PHP
PHP实现非阻塞模式的方法分析
Jul 26 #PHP
php实现等比例压缩图片
Jul 26 #PHP
PHP输出Excel PHPExcel的方法
Jul 26 #PHP
PHP微信H5支付开发实例
Jul 25 #PHP
You might like
php垃圾代码优化操作代码
2010/08/05 PHP
php中错误处理操作实例分析
2019/08/23 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
Cython 三分钟入门教程
2009/09/17 Python
PYTHON基础-时间日期处理小结
2018/05/05 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
python实现XML解析的方法解析
2019/11/16 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
如何实现一个自定义类的序列化
2012/05/22 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
大学生实习证明范本
2014/01/15 职场文书
工地安全标语
2014/06/07 职场文书
科学发展观标语
2014/10/08 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript