首页 文章

使用mongodb重置Laravel密码

提问于
浏览
3

我正在将旧项目(在zend框架中完成)迁移到laravel 5.5 . 数据库是mongo db . 我正在使用laravel-mongodb连接laravel和mongo .

我已经覆盖了laravel登录功能,因为表字段与默认的laravel字段不同 . 登录工作正常 .

目前,当我尝试重置密码时,我收到错误消息“我们找不到具有该电子邮件地址的用户” . 如何覆盖重置密码功能?

在用户表中,字段名称为usrEmail和usrPassword . 登录的工作代码如下 .

目前,当我尝试重置密码时,我收到错误消息 We can't find a user with that e-mail address. 如何覆盖重置密码功能?

在用户表中,字段名称为 usrEmailusrPassword . 登录的工作代码如下 .

LoginController.php

protected function attemptLogin(Request $request)
    {
        $authUser     = User::where('usrEmail', $request->email)
            ->whereIn('usrlId', [1, 2, 5, 6])
            ->first();

        if($authUser) {
            $password = md5(env('MD5_Key'). $request->password. $authUser->usrPasswordSalt);
            $user     = User::where('usrEmail', $request->email)
                ->where('usrPassword', $password)
                ->where('usrActive', '1')
                ->where('usrEmailConfirmed', '1')
                ->where('is_delete', 0)
                ->where('usrlId', 2)
                ->first();

            if ($user) {
                $updateLoginTime            = User::find($user->_id);
                $updateLoginTime->lastlogin = date('Y-m-d H:i:s');
                $updateLoginTime->save();

                $this->guard()->login($user, $request->has('remember'));
                return true;
            }
            else {
                return false;
            }
        }

        return false;
    }

1 回答

  • 0

    试着把它放在你的 Auth/ResetsPasswordController.php

    protected function credentials(Request $request)
    {
        $data = $request->only(
            'password', 'password_confirmation', 'token'
        );
    
        $data['usrEmail'] = $request->get('email');
    
        return $data;
    }
    

    默认情况下 ->only( 也包含 email 字段,但由于它在数据库中不同,我们需要覆盖此函数,默认情况下在 ResetsPasswords 特性中定义 .

    这应该确保密码重置流程中的任何 email 字段(一旦您单击电子邮件链接请求电子邮件和表单)将指向数据库中的右侧字段 .

相关问题