详解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 相关文章推荐
第四节--构造函数和析构函数
Nov 16 PHP
用php过滤危险html代码的函数
Jul 22 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP实现的下载远程图片自定义函数分享
Jan 28 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
PHP PDOStatement::bindColumn讲解
Jan 30 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
php下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
小谈php正则提取图片地址
2014/03/27 PHP
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
javascript的几种写法总结
2016/09/30 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python 12306抢火车票脚本
2018/02/07 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
党员教师工作决心书
2014/03/13 职场文书
集中采购方案
2014/06/10 职场文书
公司应聘自荐书
2014/06/14 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
诚信高考倡议书
2019/06/24 职场文书
java设计模式--七大原则详解
2021/07/21 Java/Android
Flink 侧流输出源码示例解析
2022/09/23 Servers