详解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 相关文章推荐
屏蔽浏览器缓存另类方法
Oct 09 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
PHP 图片水印类代码
Aug 27 PHP
php对包含html标签的字符串进行截取的函数分享
Jun 19 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
自制PHP框架之设计模式
May 07 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
php实现的简单多进程服务器类完整示例
Feb 01 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 21 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入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
golang与PHP输出excel示例
2016/07/22 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
利用百度地图API获取当前位置信息的实例
2017/11/06 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
[07:47]DOTA2国际邀请赛采访专栏:探访Valve总部
2013/08/08 DOTA
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Python异常处理知识点总结
2019/02/18 Python
Django 用户认证组件使用详解
2019/07/23 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
C有"按引用传递"吗
2016/09/06 面试题
金融专业个人求职信
2013/09/22 职场文书
大学生找工作求职信
2014/07/09 职场文书
导游词400字
2015/02/13 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS