如何为 laravel 手动输入忘记密码

How to write forgetpassword manually for laravel

我自己写了一个登录系统,我使用 authUser 模型进行身份验证。

现在我要写重置密码,

我找到了 PasswordBroker 所以我在我的控制器中写了一个方法:

public function forgetPassword(Request $request, PasswordBroker $password) {
        if (empty($request->session()->get('email'))) {
            return redirect()->route('login');
        }

        $response = $password->sendResetLink([$request->session()->get('email')], function($message)
        {
            $message->subject('Password Reset');
        });

    }

但是当我尝试重设密码时出现此错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `users` where `0` = email@domain.com limit 1)

我该怎么办?

更新:

我的 users 迁移:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

我找到了解决方案,

sendResetLink中,我们应该在第一个参数中将email作为key传递,

所以我的代码应该更改为:

public function forgetPassword(Request $request, PasswordBroker $password) {
        if (empty($request->session()->get('email'))) {
            return redirect()->route('login');
        }

        $response = $password->sendResetLink(['email' => $request->session()->get('email')], function($message)
        {
            $message->subject('Password Reset');
        });

    }