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格式化工具Beautify PHP小小BUG
Apr 24 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
PHP中Closure类的使用方法及详解
Oct 09 PHP
php中使用GD库做验证码
Mar 31 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
laravel 数据验证规则详解
Oct 23 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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中基本符号及使用方法
2010/03/23 PHP
JS 网站性能优化笔记
2011/05/24 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
2012/01/13 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
js 异步操作回调函数如何控制执行顺序
2013/12/24 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
jquery获取select选中值的方法分析
2015/12/22 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Python with语句和过程抽取思想
2019/12/23 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
护士专业推荐信
2013/11/02 职场文书
环境科学专业个人求职的自我评价
2013/11/28 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
2016年校长新年寄语
2015/08/17 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript