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 - 更改默认验证字段“密码”名称的主要内容,如果未能解决你的问题,请参考以下文章