详解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下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 PHP
PHP引用符&amp;的用法详细解析
Aug 22 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
Feb 15 PHP
PHP输出Excel PHPExcel的方法
Jul 26 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 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
php 禁止页面缓存输出
2009/01/07 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
关于Curl在Swoole协程中的解决方案详析
2019/09/12 PHP
ie focus bug 解决方法
2009/09/03 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
EM算法的python实现的方法步骤
2018/01/02 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
利用CSS3实现折角效果实例源码
2016/09/28 HTML / CSS
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
教师工作自我鉴定范文
2014/09/14 职场文书
学校百日安全活动总结
2015/05/07 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
用Java实现简单计算器功能
2021/07/21 Java/Android
Python正则表达式中flags参数的实例详解
2022/04/01 Python
delete in子查询不走索引问题分析
2022/07/07 MySQL