Laravel配置DingoAPI和JWT
引入Dingo API和JWT
1、在composer.json的require中添加
"require": {"dingo/api": "1.0.*@dev",
"tymon/jwt-auth": "0.5.*"
}
2、执行composer update 引入新添加的包
配置Dingo API
1、配置provider
Dingo\Api\Provider\LaravelServiceProvider::class,
2、生成配置文件方便配置:
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
执行之后会在config文件夹中生成api.php配置文件,Dingo API 配置完成。
配置JWT
1、配置provider
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class
2、配置aliases
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class
3、生成配置文件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
执行之后会在config文件夹中生成jwt.php配置文件
4、生成秘钥
php artisan jwt:generate
至此Dingo API 和 JWT引入完成。
配置Dingo API
在.env中添加一下配置:
API_STANDARDS_TREE=vnd API_PREFIX=api API_VERSION=v1 API_DEBUG=true
Dingo API的配置文件api.php中添加以下配置:
'auth' => [ // 配置Dingo API JWTbasic' => function($app){return new Dingo\Api\Auth\Provider\Basic($app['auth']);},'jwt' => function($app){return new Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);}],
在Kernel中的routeMiddleware中添加以下配置:
'jwt.auth' => Tymon\JWTAuth\Middleware\GetUserFromToken::class, 'jwt.refresh' => Tymon\JWTAuth\Middleware\RefreshToken::class,
Dingo API和JWT引入和配置都完成了。
配置Dingo API路由
//接管路由 $api = app('Dingo\Api\Routing\Router'); // 配置api版本和路由 $api->version('v1', ['namespace' => 'App\Api\Controllers\V1'], function ($api) {
$api->get('lesson', 'LessonController@index')->name('auth.register');
);
此时可以使用 php aritsan api:route 查看api路由
创建BaseController use Dingo API的trait
namespace App\Api\Controllers\V1;use Illuminate\Http\Request; use App\Http\Controllers\Controller; use Dingo\Api\Routing\Helpers;class BaseController extends Controller {use Helpers; }
使用Transformer
在实际开发中,可能你想要返回的json尽可能的和数据库的不一致,这时可以使用Dingo API的transformer
定义每个模型对应的Transformer,每个transformer继承自TransformerAbstract (use League\Fractal\TransformerAbstract;);
<?php namespace App\Api\Transformers; use App\Lesson; use League\Fractal\TransformerAbstract;class LessonTransformer extends TransformerAbstract{public function transform(Lesson $lesson){return ['title' => $lesson['title'],'content' => $lesson['body'],'is_free' => $lesson['free'],];} }
对应的控制器的写法
<?phpnamespace App\Api\Controllers\V1;use Illuminate\Http\Request; use App\Lesson; use App\Api\Transformers\LessonTransformer; class LessonController extends BaseController {public function index(){$lessons = Lesson::all();return $this->collection($lessons,new LessonTransformer()); //Dingo API的collection方法}}
使用JWT
新建AuthController继承BaseController
public function authenticate(Request $request){// grab credentials from the request$credentials = $request->only('email', 'password');try {// attempt to verify the credentials and create a token for the userif (! $token = JWTAuth::attempt($credentials)) {return response()->json(['error' => 'invalid_credentials'], 401);}} catch (JWTException $e) {// something went wrong whilst attempting to encode the tokenreturn response()->json(['error' => 'could_not_create_token'], 500);}// all good so return the tokenreturn response()->json(compact('token'));}
路由:
$api->post('user/login','AuthController@authenticate')->name('auth.login');
用户成功登陆之后会返回一个token,如果我们把其他的路由放在jwt.auth的middleware的时候,此时的所有访问都要带着正确的token才可以访问。
转载于:https://www.cnblogs.com/lindoubao/p/7379726.html
Laravel配置DingoAPI和JWT相关推荐
- Laravel使用Dingo API+JWT实现认证机制 无痛刷新Token
Laravel使用Dingo API+JWT实现认证机制 无痛刷新Token 一.安装[Dingo API](https://github.com/dingo/api) 和 [JWT](https:/ ...
- php为什么需要配置路由器,laravel 配置路由 api和web定义的路由的区别详解
1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware ...
- ThinkSNS+在研发过程中,如何做到 Laravel 配置可以网站后台...
什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+.ThinkSNS V4. ...
- laravel配置路由会报404 Not Found
laravel配置路由会报404 Not Found 故障现象: 例如:配置了测试路由,正常访问"域名/user",应该返回"路由测试", Route::get ...
- laravel和dingoapi的结合使用
dingoapi是一个laravel的开源插件,可以在github上搜索到,现在在做一个项目,项目中总是会有后端跟前端的json数据交互,而这个dingoapi为json交互提供了很大的便利. 先安装 ...
- laravel 5.5 整合 jwt 报错Method Tymon\JWTAuth\Commands\JWTGenerateCommand::handle() does not exist解决...
今天介绍一个在laravel5.5新版本整合jwt 执行 php artisan jwt:generate 再生成密钥时报的一个错误 Method Tymon\JWTAuth\Commands\JW ...
- laravel 配置微信公众号时{errcode:-106,errmsg:token check fail}
一.问题描述 做微信授权登录时,遇到的一个坑,提示配置失败,F12,响应为 errcode":-106,"errmsg":"token check fail 二 ...
- Laravel配置自带组件实现各类型邮件发送功能的代码实例
本篇文章主要讲解laravel自带的邮件组建配置和应用说明. 版本:laravel5.8+ 步骤一.配置env文件 MAIL_DRIVER=smtp MAIL_HOST=smtp 地址 MAIL_PO ...
- Laravel 配置
首页 问答社区 中文文档 API Composer Github 配置说明 框架下载好了,但是想要很好的使用,可能我们还有一些东西需要知道,这就是配置.和项目有关的配置是在 app/config 文件 ...
- laravel配置加解密
基于安全考虑,我们php项目配置文件中密码应该是加密的,laravel中也提供了OpenSSL 的 AES-256-CBC 来进行加密 但是如果我们项目配置的是其他加密方式,且希望以最少的改动实现读取 ...
最新文章
- Latex中数学公式中常用符号(持续更新)
- <笔记1>matplotlib绘图工具笔记
- Android 之 沉浸式状态栏及顶部状态栏背景色设置
- report service常见处理办法
- python中的for语句涉及的序列可以是列表_Python中的列表与循环
- 【深度学习】Swin-Transformer和EfficientNet对比分析
- Resharper 的快捷键
- 2.在某应用软件中需要记录业务方法的调用日志,在不修改现有业务类的基础上为每一个类提供一个日志记录代理类,在代理类中输出日志,例如在业务方法 method() 调用之前输出“方法 method() 被
- ASP.NET MVC3数据绑定到VIEW的方式
- leetcode1306. 跳跃游戏 III(bfs)
- mysql存储过程触发器游标_MySQL存储过程,触发器,游标
- 【LeetCode笔记】263. 丑数(Java、迭代)
- mysql常用操作指令总结
- word之八大文本替换技巧
- 查询表授权给谁了_SQL Server 全局临时表竞争条件漏洞利用
- Cortex-M0(3)---ARM Cortex-M0 异常与中断
- EXCEL 求解线性规划问题
- mybatis where 标签使用
- 【分享】常用JS(2)
- php机房图形资产管理系统,机房资产管理系统(CMDB)
热门文章
- 全网首发:JAVA的+=类算符,带有自动类型转换功能
- 人工搜索文字不可靠,还是要使用工具
- JDK数字格式,由星期几变为周几
- 高铁:繁忙时限制上车补票
- LINUX下system和execl有什么差异?
- 管理感悟:能图像不文字
- 苹果被拒:Guideline 5.0 - Legal
- ios 获取最后一个cell_ios – UICollectionView estimatedItemSize – 最后一个单元格未对齐...
- 出现画面抖动_手机拍照时模糊,抖动?赶紧来拯救你的拍摄技术吧!
- C# 获取结构体长度 指针转结构体 指针转结构体数组