我可以在 laravel 和 mongodb 中更新我的密码吗?

Can I update my password in laravel and mongodb?

我正在 laravel 编码,我必须更新我的密码,我做了一些编码但它显示了这个错误

Creating default object from empty value

这是我在控制器中的代码

public function passwordChange(Request $request, $email)
    {
        $user = User::find($email);

        $user->password = $request->get('password');
        $user->save();

        return redirect('home');
    }

我在会话中通过了电子邮件

这是我的 Blade 文件的代码

<section id="wrapper">
        <div class="login-register" style="background-image:url(../assets/images/background/pic.jpg);">
            <div class="login-box card">
                <div class="card-body">

                    @if(Session::has('key'))
                        {{Session::get('key')['email']}}
                    @endif

                    <form class="form-horizontal form-material" id="loginform" method="POST" action="{{ url('reset-password', 'email')}}">
                        @csrf

                        <h3 class="box-title m-b-20">{{__('Recover Password')}}</h3>
                        <div class="form-group ">
                            <div class="col-xs-12">
                                <input class="form-control" type="password" required name="password" placeholder="New Password">
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-xs-12">
                                <input class="form-control" type="password" required placeholder="Confirm Password">
                            </div>
                        </div>
                        <div class="form-group text-center p-b-10">
                            <div class="col-xs-12">
                                <button class="btn btn-info btn-lg btn-block text-uppercase waves-effect waves-light" type="submit">
                                {{__('Set New Password')}}</button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>

这是我的路线文件

 Route::post('reset-password/{email}', 'AdminController@passwordChange');

Collection 的 ::find() 方法搜索 id 或指定的模型主键,您应该尝试:

::where('email', $email)->first()

问题是您使用 find 方法查找电子邮件,因为 find() 方法通过 $primaryKey 属性 查找记录。取而代之的是,你可以这样做

$user = User::where('email',$email)->first()
$user->password = $request->get('password');
$user->save();

我建议您以哈希形式保存密码。 你可以使用 bcrypt 辅助函数或者你可以通过 Hash::make($yourPassword)