Laravel 8 - 更改默认验证字段“密码”名称

Posted

技术标签:

【中文标题】Laravel 8 - 更改默认验证字段“密码”名称【英文标题】:Laravel 8 - Change default validation field "password" name 【发布时间】:2022-01-16 02:08:17 【问题描述】:

我正在尝试更改要发送到方法auth()->validate($credentials) 的变量$credentials 的字段“密码”的名称。我想要$credentials['new_password'],而不是$credentials['password']

做了大量的研究,人们总是谈论一个 LoginController,说要做到这一点,你必须在这个控制器中进行一些修改。但我在 Laravel 8 中根本找不到它。我需要创建它吗?也许 laravel 8 的工作方式有点不同?我刚开始使用 laravel 一周,所以如果这是一个太愚蠢的问题,我很抱歉。

这是我的代码:

class AuthController extends Controller

public function login(Request $request)
    $credentials = $request->all(['email','password']);

    if(auth()->validate($credentials ))
        //Some code here...
    

已经在我的用户模型中重新声明了getAuthPassword(),如下所示:

public function getAuthPassword()
    return $this->new_password;

身份验证已经在用户表列名称为“new_password”的情况下工作,但仍需要使用字段“password”发送请求。

编辑 1:我使用 JWTAuth 来处理身份验证。

【问题讨论】:

【参考方案1】:

如果您想在传递给验证器之前更改凭证名称,您可以这样做

class AuthController extends Controller

  public function login(Request $request)
$credentials['email'] = $request->email;
$credentials['new_password'] = $request->password;
$credentials['foo'] = $request->bar;
 //some more credentials

if(auth()->validate($credentials ))
    //Some code here...


这可能会有所帮助。

【讨论】:

感谢您的回答。实际上,我想要更改 validate() 方法用于验证密码的默认字段名称。如果我通过 $credentials['new_password'],即使凭据正确,该方法也会返回 false,因为它无法识别索引“new_password”。 如何覆盖验证器()方法。你试过吗?

以上是关于Laravel 8 - 更改默认验证字段“密码”名称的主要内容,如果未能解决你的问题,请参考以下文章

想修改 laravel 默认登录来检查用户是不是被验证

如何在 Laravel 中验证 bcrypt 密码?

Laravel 5.6 空字段验证

Laravel 5.2 - 经过身份验证的用户更改密码 - 更新后的密码匹配问题

编辑帐户中密码字段的 Laravel 4 验证器

我有一个密码和一个确认密码字段,我已经使用 laravel 对其进行了验证,但即使两个字段的密码相同,它也显示不匹配?