编程 Laravel 13:PHP 8.3 起跳,PreventRequestForgery 做 origin 校验,Cache::touch 一条 EXPIRE 续期

2026-09-26 21:03:32

Laravel 13:PHP 8.3 起跳,PreventRequestForgery 做 origin 校验,Cache::touch 一条 EXPIRE 续期

Laravel 13 于 2026 年 3 月 17 日发布(v13.0.0),最低要求 PHP 8.3,不再支持 8.2。Bug 修复支持到 2027 年第三季度,安全修复支持到 2028 年第一季度。没有报告重大破坏性变更,整体是一次平滑的大版本升级。

参考资料:

PreventRequestForgery:CSRF 中间件加入 origin 校验

请求伪造防护中间件被增强并正式命名为 PreventRequestForgery,在保持与基于 token 的 CSRF 防护兼容的前提下,增加了来源(origin)感知的请求校验。在现代浏览器中它优先检查 Sec-Fetch-Site 头,只有在 origin 信号不可用时才回退到 token 校验。

这是实打实的安全改进,但如果你的应用有自定义 CSRF 流程、需要兼容较旧的浏览器,或者子域名行为不太常规,它也会成为升级时需要处理的点。

Cache::touch:不取值就能续 TTL

Cache::touch(...) 可以在不取出、也不重新写入缓存值的情况下延长已有缓存项的 TTL。以前续 TTL 要先 get 再 put,等于把缓存值白跑一趟网络。Cache::touch 省掉了这一步:Redis 用一条 EXPIRE,Memcached 用 TOUCH,数据库驱动发一条 UPDATE。成功返回 true,key 不存在返回 false。实现覆盖 Array、APC、Database、DynamoDB、File、Memcached、Memoized、Null 和 Redis。(PR #55954)

Queue::route:按类集中配置队列路由

通过 Queue::route(...) 可以按 job 类做队列路由,把默认的 queue/connection 规则集中写在一个地方:

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');

扩展的 PHP Attributes

控制器与鉴权侧新增 #[Middleware]、#[Authorize];队列 job 侧新增 #[Tries]、#[Backoff]、#[Timeout]、#[FailOnTimeout]、#[DeleteWhenMissingModels]、#[WithoutRelations];Eloquent 侧新增 #[Fillable([...])] 与 #[Hidden([...])]。

class FlightController extends Controller {
    #[Middleware(LogRequests::class)]
    #[Authorize('view', 'flight')]
    public function show(Flight $flight) {}
}

Laravel AI SDK

第一方统一 API,覆盖文本生成、工具调用 agent、embedding、音频、图像、向量存储;与 provider 解耦(OpenAI / Anthropic / Gemini),支持 failover。

JSON:API Resources

通过 Illuminate\Http\Resources\JsonApi\JsonApiResource 提供第一方支持,处理资源对象序列化、关系包含、稀疏字段集(sparse fieldsets)、links,以及符合 JSON:API 规范的响应头。

语义 / 向量搜索

原生的向量查询与 embedding 支持,底层走 PostgreSQL + pgvector:

DB::table('documents')->whereVectorSimilarTo('embedding', '...')->limit(10)->get();

Session / 序列化加固

新增 serializable_classes 配置,Laravel 现在会加固 cache 与 session 中 PHP 对象的存储。若干 contract 与 cache 内部实现有变更。

Reverb 数据库驱动

以前横向扩展 Laravel Reverb 必须用 Redis 作为消息 broker,Laravel 13 增加了数据库驱动,直接复用现有的 MySQL / PostgreSQL。

Starter kits

Teams 功能回归:多团队上下文通过 URL 区分,可以在两个浏览器 tab 中分别保持不同的团队;同时加入 Passkey 登录。

复制全文 生成海报 PHP Laravel 框架 缓存 安全

推荐文章

程序员茄子在线接单