page contents

Laravel 9.4 发布

Laravel 团队发布了 9.4,它具有覆盖 CSRF cookie、Str::lcfirst() 方法、队列邮件的可选重试机制等功能:

attachments-2022-03-tzyA41WH622c0ea20f8a2.png

Laravel 团队发布了 9.4,它具有覆盖 CSRF cookie、Str::lcfirst() 方法、队列邮件的可选重试机制等功能:

允许扩展 VerifyCsrfToken 的 CSRF cookie

@jaggy 通过在应用程序的扩展 CSRF 中间件上VerifyCsrfToken定义一个方法来提供覆盖的能力:newCookie

class VerifyCsrfToken extends Middleware {
    protected function newCookie($request, $config)
    {
        return new Cookie(
        "XSRF-TOKEN-{$request->user()->type}",
        $request->session()->token(),
        $this->availableAt(60 * $config['lifetime']),
        $config['path'],
        $config['domain'],
        $config['secure'],
        false,
        false,
        $config['same_site'] ?? null,
        );
    }
}

虽然大多数应用程序不需要覆盖默认行为,但 PR 作者提供了以下用例:

在多租户系统中的某些情况下,用户可能希望更改 CSRF 令牌名称以防止 419 错误。多个 Auth 提供者也主要在 XHR 请求中实现这一点。这也允许多租户系统从中间件层更新令牌的域(即拉取当前租户的自定义域)。

我认为这对使用 Inertia 的人有很大帮助,允许XSRF-TOKEN通过添加租户 ID 甚至用户类型来自定义命名方式。

为查询构建器添加 soleValue 方法

Matthew Hailwood 提供了一种新soleValue()方法来查询构建器以从唯一值而不是整个记录返回列:

// 如果不完全是一个结果,则保释,但返回一个对象
$query->sole(['id']);
// 只返回值,但没有安全性只有一个结果
$query->value('id');
// 要获得 ID,我们必须这样做
$query->sole(['id'])->id;

此更新允许以下用法:

$query->sole(['id']);
$query->value('id');
$query->soleValue('id');

添加字符串 lcfirst() 方法

Vincent Prat为and类贡献了一个lcfirst()方法,它也支持非 ASCII 字符:Str``Stringable

Str::lcfirst('Laravel'); 
2Str::lcfirst('Laravel framework'); 
3Str::lcfirst('Мама'); 
4Str::lcfirst('Мама мыла раму');

在 schedule:list 命令中添加“Mutex”列

@madman-81为命令贡献了一Has Mutex列schedule:list,指示互斥锁是否阻止命令。问题#41311解释了本专栏如何帮助调试任何调度程序问题:

今天我遇到了一个未运行的计划任务的问题。我花了一段时间才弄清楚发生了什么,主要是因为它schedule:list没有显示任何异常,并且正在按预期更新“下一个到期”时间戳。但是任务没有执行。长话短说,任务卡住了,因为未清除互斥锁,可能是因为计划外的服务器重新启动。

这是基于上述问题中概述的输出示例:

$ php artisan schedule:list

+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+

| Command | Interval | Description | Next Due | Has Mutex |

+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+

| '/usr/bin/php8.0' 'artisan' mycommands:something | */2 * * * * | Process something | 2022-03-03 10:22:00 +00:00 | Yes |

| '/usr/bin/php8.0' 'artisan' mycommands:otherthing | */2 * * * * | Process otherthing | 2022-03-03 10:22:00 +00:00 | |

+----------------------------------------------------------+-------------+--------------------+----------------------------+----------------------------+

支持修改 char 列类型

Hafez Divandari贡献了修改char列类型的能力:

1Schema::table('users', function (Blueprint $table) {
2    $table->char('name', 50)->nullable()->change();
3});

[The] 学说/dbal 包实际上支持通过将选项设置为 . 来修改char列类型为StringType::class。fixed``true

所以这个 PR,将 Laravel 映射char到它的 Doctrine 等效string类型,并设置fixed选项true,最终得到 SQL 片段来声明一个 CHAR 列。

排队邮件的重试机制

MaxGiting提供了为排队的邮件指定retryUntil()方法或timeoutAt属性的能力。查看Pull Request #41393了解更多详情。

发行说明

您可以在下面查看新功能和更新的完整列表以及GitHub 上9.3.0 和 9.4.0之间的差异。

v9.4.0
添加

  • 支持修改 char 列类型
  • 将“Mutex”列添加到 'schedule:list' 命令
  • 允许 eloquent whereNot() 和 orWhereNot() 处理列和值
  • 允许扩展 VerifyCsrfToken 的 CSRF cookie
  • 添加soleValue()到查询生成器
  • 添加lcfirst()到Str和`Stringable
  • 为排队的邮件添加了 retryUntil 方法

固定的

  • 修复了用于身份验证会话的中间件排序
  • 修复 LazyCollection 的 takeUntilTimeout 方法
  • 修复了可邮寄的嵌套降价文件的目录
  • 防止序列化排队作业的默认值
  • Illuminate/Http/Client/PendingRequest.php修复了( a54f481)中的 get() 和 head( )

改变了

  • 不要使用全局点击助手
  • 允许链接Illuminate/Console/Concerns/InteractsWithIO::newLine
  • 设置目的地,因为 Mail SesTransport ( 8ca43f4)中的原始消息中缺少密件抄送

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-TkMYHYV962b2dfd351bb8.jpeg

  • 发表于 2022-03-12 11:08
  • 阅读 ( 483 )
  • 分类:行业资讯

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1742 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章