详解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连mysql和oracle数据库性能比较
Oct 09 PHP
使用php+xslt在windows平台上
Oct 09 PHP
php设计模式 Decorator(装饰模式)
Jun 26 PHP
组合算法的PHP解答方法
Feb 04 PHP
php笔记之:数据类型与常量的使用分析
May 14 PHP
php对数组排序代码分享
Feb 24 PHP
php图片的二进制转换实现方法
Dec 15 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
php防止用户重复提交表单
Nov 02 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 PHP
php输出形式实例整理
May 05 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中养成7个面向对象的好习惯
2010/01/28 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
jQuery中on()方法用法实例
2015/01/19 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
js实现鼠标移动到图片产生遮罩效果
2017/10/21 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
利用python在excel中画图的实现方法
2020/03/17 Python
Django 解决开发自定义抛出异常的问题
2020/05/21 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
财务主管的岗位职责
2013/12/30 职场文书
《童趣》教学反思
2014/02/19 职场文书
班级体育活动总结
2014/07/05 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle