Laravel怎么关闭CSRF验证_Laravel特定路由跳过CSRF保护

发布时间 - 2026-01-04 00:00:00    点击率:
答案:在 Laravel 中跳过 CSRF 验证的方法包括:1. 在 VerifyCsrfToken 中的 $except 添加路径,如 '/api/*';2. 将路由定义在 api.php 使用 API 中间件组;3. 通过 withoutMiddleware 移除特定路由的 CSRF 验证,但不推荐全局关闭。

在 Laravel 中,CSRF(跨站请求伪造)保护默认是开启的,通过中间件 VerifyCsrfToken 实现。但有时我们需要为某些路由关闭或跳过 CSRF 验证,比如开发 API 接口、接收第三方回调等场景。

方法一:将路由添加到 CSRF 白名单(推荐)

最安全的方式是保留大部分路由的 CSRF 保护,仅对特定路由或 URL 路径跳过验证。

打开文件:app/Http/Middleware/VerifyCsrfToken.php

$except 数组中添加需要跳过验证的路由路径:

protected $except = [
    '/api/*',
    '/webhook/paypal',
    '/admin/payment/callback'
];

注意:这里的路径是相对于域名的 URI,不包含域名本身。支持通配符 *

方法二:使用 API 中间件组(适用于 API 路由)

Laravel 默认的 API 路由不会启用 CSRF 保护,因为它们使用的是 api 中间件组,而不是 web 中间件组。

确保你的路由定义在 routes/api.php 文件中:

Route::post('/callback', [PaymentController::class, 'callback']);

这类路由自动跳过 CSRF 验证,适合无状态的 API 请求。

方法三:自定义中间件或移除 CSRF 中间件(不推荐全局关闭)

不建议直接移除或关闭整个应用的 CSRF 保护,这会带来安全风险。

如果你确实需要为一组特殊路由完全关闭,可以创建一个不包含 CSRF 的中间件组,或者为这些路由单独指定中间件。

例如,在 routes/web.php 中指定某个路由不使用 CSRF:

Route::post('/public/submit', [PublicFormController::class, 'store'])->withoutMiddleware([\App\Http\Middleware\VerifyCsrfToken::class]);

注意事项

  • 表单提交(尤其是 web 表单)应始终保留 CSRF 保护,防止恶意请求。
  • API 接口建议使用 Token 认证(如 Sanctum、Passport),而非依赖 CSRF。
  • 测试环境中关闭 CSRF 时,也要确保上线前恢复配置。

基本上就这些。根据实际需求选择合适的方式,优先使用白名单机制,既灵活又安全。


# laravel  # php  # app  # 路由  # 表单提交  # 中间件  # csrf  # Token  # 接口  # class  # public  # protected  # http  # 跳过  # 移除  # 表单  # 不包含  # 的是  # 如果你  # 尤其是  # 也要  # 适用于  # 这类 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 教你用AI将一段旋律扩展成一首完整的曲子  如何用免费手机建站系统零基础打造专业网站?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何获取免费开源的自助建站系统源码?  如何快速搭建虚拟主机网站?新手必看指南  EditPlus 正则表达式 实战(3)  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何确保西部建站助手FTP传输的安全性?  JS去除重复并统计数量的实现方法  如何用景安虚拟主机手机版绑定域名建站?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  如何快速打造个性化非模板自助建站?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在企业微信快速生成手机电脑官网?  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  JS经典正则表达式笔试题汇总  原生JS获取元素集合的子元素宽度实例  Laravel如何使用Sanctum进行API认证?(SPA实战)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  如何彻底卸载建站之星软件?  JavaScript实现Fly Bird小游戏  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  黑客如何通过漏洞一步步攻陷网站服务器?  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel观察者模式如何使用_Laravel Model Observer配置  个人网站制作流程图片大全,个人网站如何注销?  如何在Windows环境下新建FTP站点并设置权限?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  实例解析Array和String方法  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  青岛网站建设如何选择本地服务器?  高防服务器租用首荐平台,企业级优惠套餐快速部署  使用豆包 AI 辅助进行简单网页 HTML 结构设计  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  创业网站制作流程,创业网站可靠吗?  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  微信h5制作网站有哪些,免费微信H5页面制作工具?  EditPlus中的正则表达式 实战(4)  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel如何与Pusher实现实时通信?(WebSocket示例)  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  教你用AI润色文章,让你的文字表达更专业  如何用JavaScript实现文本编辑器_光标和选区怎么处理