Laravel5.3+框架定义API路径取消CSRF保护方法详解


Posted in PHP onApril 06, 2020

从Laravel 5.3+开始,API路径被放入了routes/api.php中。我们绝大多数的路径其实都会在web.php中定义,因为在web.php中定义的路径默认有CSRF保护,而API路径默认没有CSRF保护。在Laravel官网文档中写到:/p>

Any HTML forms pointing to POST, PUT, or DELETE routes that are defined in the web routes file should include a CSRF token field. Otherwise, the request will be rejected.

所以,请注意你页面的表单中是否使用了POST、PUT或DELETE方法,如果有,并且你没有在表单中添加相应的CSRF token时,你的请求将会失败。

有时候,我们可能不想要CSRF保护。比如我们想使用第三方软件测试表单提交,或者比如微信公众号接口的开发时,当微信服务器使用POST推送给我们消息时,如果开启了CSRF保护,那么请求肯定是失败的。

在这样的情况下,我们可以使用API路径来取消CSRF保护。

我们有两种办法来定义API Routes。

第一种办法:

将routes放进VerifyCsrfToken这个middleware的$except数组里:

<?php      
  
namespace App\Http\Middleware;    
  
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;    
  
class VerifyCsrfToken extends BaseVerifier    
{      
  /**      
   * The URIs that should be excluded from CSRF verification.      
   *      
   * @var array      
   */      
  protected $except = [      
    '/api/my-route',      
  ];      
}

以上middleware的位置在app/Http/Middleware文件夹中。

第二种方法:

将routes放进api.php里:

<?php      
  
use Illuminate\Http\Request;      
  
/*      
|--------------------------------------------------------------------------      
| API Routes      
|--------------------------------------------------------------------------      
|      
| Here is where you can register API routes for your application. These      
| routes are loaded by the RouteServiceProvider within a group which      
| is assigned the "api" middleware group. Enjoy building your API!      
|      
*/      
  
Route::middleware('auth:api')->get('/user', function (Request $request) {      
  return $request->user();      
});      
  
Route::get('/wechat', 'WechatAPIController@some-method');      
Route::post('/wechat', 'WechatAPIController@some-other-method');

api.php和web.php同处于routes文件夹下。

在api.php中添加的路径,在访问时,我们需要在路径前,加上api/前缀:

//3water.com/api/wechat

好了,这样一来,我们就完成了API路径的定义,或者换句话说,取消了路径的CSRF保护。

本文主要讲解了Laravel框架定义API路径取消CSRF保护的操作方法,更多关于Laravel框架的使用技巧请查看下面的相关链接

PHP 相关文章推荐
利用static实现表格的颜色隔行显示
Oct 09 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
PHP中加密解密函数与DES加密解密实例
Oct 17 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
分享微信扫码支付开发遇到问题及解决方案-附Ecshop微信支付插件
Aug 23 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
php截取视频指定帧为图片
May 16 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 #PHP
使用git迁移Laravel项目至新开发环境的步骤详解
Apr 06 #PHP
Laravel框架数据库迁移操作实例详解
Apr 06 #PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
Apr 06 #PHP
Laravel实现批量更新多条数据
Apr 06 #PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 #PHP
TP5框架安全机制实例分析
Apr 05 #PHP
You might like
用PHP和MySQL保存和输出图片
2006/10/09 PHP
PHP 已经成熟
2006/12/04 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
PHP队列用法实例
2014/11/05 PHP
php创建session的方法实例详解
2015/01/27 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
javascript强大的日期函数代码分享
2013/09/04 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python模块常用用法实例详解
2019/10/17 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
django为Form生成的label标签添加class方式
2020/05/20 Python
如何一键升级Python所有包
2020/11/05 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
管理学院毕业生自荐信范文
2014/03/10 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
个人合伙协议书范本
2014/10/14 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
求职推荐信范文
2015/03/27 职场文书
实施意见格式范本
2015/06/05 职场文书
2015大一新生军训感言
2015/08/01 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书