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 相关文章推荐
PHP 上传文件大小限制
Jul 05 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
Jul 07 PHP
php at(@)符号的用法简介
Jul 11 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
php后门URL的防范
Nov 12 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
Dec 22 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
超强多功能php绿色集成环境详解
Jan 25 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
PHP Swoole异步读取、写入文件操作示例
Oct 24 PHP
PHP变量的作用范围实例讲解
Dec 22 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函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
PHP中cookie知识点学习
2018/05/06 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
jQuery时间日期三级联动(推荐)
2016/11/27 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
深入理解python try异常处理机制
2016/06/01 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Django实现组合搜索的方法示例
2018/01/23 Python
使用python实现BLAST
2018/02/12 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
CSS3 滤镜 webkit-filter详细介绍及使用方法
2012/12/27 HTML / CSS
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
十一国庆节“向国旗敬礼”主题班会活动方案
2014/09/27 职场文书
学校开学标语
2014/10/06 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
女儿满月酒致辞
2015/07/29 职场文书
法院执行局工作总结
2015/08/11 职场文书
珍爱生命主题班会
2015/08/13 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript