Laravel 旧方法不返回密码值

Laravel old method not returning password values

我目前正在学习 Laravel 并且我正在创建注册表单。当表单有错误时,我想用它们的旧值重新填充输入字段。

我的表单如下所示:

<form method="post" action="/users/store">
    @csrf
    <input type="text" name="username" value="{{ old('username') }}">
    <input type="email" name="email" value="{{ old('email') }}">
    <input type="password" name="password" value="{{ old('password') }}">
    <input type="password" name="password_confirmation" value="{{ old('password_confirmation') }}">
    <button class="btn btn-outline-warning" id="registerConfirm">Confirm</button>
</form>

为了便于阅读,我从输入文件中删除了所有标签、类 和 ID。

看起来 Laravel 不会 'want' 使用旧密码重新填充输入字段。我认为这是真的原因是因为用户名和电子邮件确实有效,但密码都是领域没有。 每当我将密码字段更改为文本字段 并且 将名称从密码更改为类似 'asdasd' 的名称时,它确实有效。

我的问题是:我的理论是否正确?如果正确,为什么 Laravel 会这样做?与安全有关吗?提前致谢!

我在 the docs 中查看了 old 方法,但它没有说明任何有关密码的信息。

Laravel 故意阻止 passwordpassword_confirmation。通常,最好不要 return 将密码返回给用户。它在它的异常处理程序中执行此操作。

如果您真的想要包含它,请更新您的 app/Exceptions/Handler.php 文件以从 dontFlash数组。

是的,没错。它与安全相关。 password 是一种特殊的字段类型,因此,它不应显示该值,也不应使用旧值填充该字段。事实上,出于安全原因,我强烈建议不要覆盖此默认行为。

另一方面,您的浏览器可能会根据设置为您存储和预填充密码字段。