【问题标题】:Laravel 8 - Change default validation field "password" nameLaravel 8 - 更改默认验证字段“密码”名称
【发布时间】: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 来处理身份验证。

【问题讨论】:

    标签: authentication jwt laravel-8


    【解决方案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”。
    • 如何覆盖验证器()方法。你试过吗?
    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 2023-01-11
    • 2018-08-04
    • 2020-03-20
    • 1970-01-01
    • 2017-01-15
    • 2018-06-21
    • 1970-01-01
    相关资源
    最近更新 更多