详解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 相关文章推荐
为IP查询添加GOOGLE地图功能的代码
Aug 08 PHP
用PHP+MySQL搭建聊天室功能实例代码
Aug 20 PHP
深入eAccelerator与memcached的区别详解
Jun 06 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
Jun 29 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
wampserver改变默认网站目录的办法
Aug 05 PHP
php文件上传的两种实现方法
Apr 04 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
PHP数组常用函数实例小结
Aug 20 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 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获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
一个实用的php验证码类
2017/07/06 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
jquery左边浮动到一定位置时显示返回顶部按钮
2014/06/05 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
vue之数据交互实例代码
2017/06/20 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
幼儿园春游活动方案
2014/01/19 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书