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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
如何隐藏你的.php文件
Jan 04 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
php实现的一段简单概率相关代码
May 30 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
php常用日期时间函数实例小结
Jul 04 PHP
如何在PHP中读写文件
Sep 07 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
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
PHP生成UTF8文件的方法
2010/05/15 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
ajax处理php返回json数据的实例代码
2013/01/24 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
VUE 单页面使用 echart 窗口变化时的用法
2020/07/30 Javascript
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
python基于event实现线程间通信控制
2020/01/13 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
中国网上药店领导者:1药网
2017/02/16 全球购物
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
考生诚信考试承诺书
2014/05/23 职场文书
实习护士自荐信
2014/06/21 职场文书
走进敬老院活动总结
2014/07/10 职场文书
2014年工程部工作总结
2014/11/25 职场文书
婚宴来宾致辞
2015/07/28 职场文书
导游词之湖北武当山
2019/09/23 职场文书