Laravel 5 Laravel 5身份验证:用户必须实现CanResetPassword接口

Laravel 5 Laravel 5身份验证:用户必须实现CanResetPassword接口,laravel-5,Laravel 5,我已经成功地实现了Laravel的Auth,用于注册、登录和注销。但是,在尝试实现密码重置功能时,我很难解决以下错误 Error: User must implement CanResetPassword interface. 我相信我的用户类配置正确: use Illuminate\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; use Illuminate\Auth\Passwords\CanResetPasswo

我已经成功地实现了Laravel的Auth,用于注册、登录和注销。但是,在尝试实现密码重置功能时,我很难解决以下错误

Error: User must implement CanResetPassword interface.
我相信我的用户类配置正确:

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, 
                                    CanResetPasswordContract {
    use Authenticatable, CanResetPassword;
    ...
}
我没有使用Eloquent,因此在config/auth.php中有以下内容:

'driver' => 'database'
有人知道我为什么会出现“用户必须实现CanResetPassword接口”错误吗

多谢

编辑:添加堆栈跟踪:

UnexpectedValueException in PasswordBroker.php line 237: 
User must implement CanResetPassword interface .

in PasswordBroker.php line 237
at PasswordBroker->getUser( array('email' => 'admin2@beaudini.com')) in PasswordBroker.php line 81
at PasswordBroker->sendResetLink (array('email' => 'admin2@beaudini.com'), object(Closure)) in Facade .php line 217
at Facade::__callStatic('sendResetLink' , array(array('email' => 'admin2@beaudini.com'), object(Closure))) in ResetsPasswords.php line 35
at Password::sendResetLink(array ('email' => 'admin2@beaudini.com'), object(Closure)) in ResetsPasswords .php line 35
at PasswordController->postEmail (object(Request))
at call_user_func_array(array(object(PasswordController), 'postEmail'), array( object(Request))) in Controller.php line 256
at Controller->callAction('postEmail', array(object(Request))) in ControllerDispatcher .php line 164
at ControllerDispatcher->call (object(PasswordController), object(Route), 'postEmail') in ControllerDispatcher .php line 112
at ControllerDispatcher->Illuminate \Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in RedirectIfAuthenticated.php line 41
at RedirectIfAuthenticated->handle(object(Request), object(Closure))
at call_user_func_array(array(object(RedirectIfAuthenticated), 'handle'), array (object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack (object(PasswordController), object(Route), object(Request), 'postEmail') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch (object(Route), object(Request), 'App\Http\Controllers\Auth\PasswordController', 'postEmail') in Route.php line 203
at Route->runWithCustomDispatcher(object (Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure }(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object< /em>(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object (Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 236
at Kernel->Illuminate\Foundation\Http \{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in Debugbar.php line 49
at Debugbar->handle(object (Request), object(Closure ))
at call_user_func_array(array(object(Debugbar), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in VerifyCsrfToken.php line 50
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object (Request), object(Closure ))) in Pipeline .php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in ShareErrorsFromSession .php line 49
at ShareErrorsFromSession ->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in StartSession.php line 62< /a>
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline .php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in AddQueuedCookiesToResponse .php line 37
at AddQueuedCookiesToResponse ->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array (object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle (object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline .php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request)) in CheckForMaintenanceMode .php line 42
at CheckForMaintenanceMode ->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure }(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 122
at Kernel->sendRequestThroughRouter (object(Request)) in Kernel.php line 87
at Kernel->handle(object( Request)) in index.php line 54
PasswordBroker.php第237行中的意外值异常: 用户必须实现CanResetPassword接口。 在PasswordBroker.php第237行中 在PasswordBroker->getUser(数组('email'=>'admin2@beaudini.com“))在PasswordBroker.php第81行中 在PasswordBroker->sendResetLink(数组('email'=>)admin2@beaudini.com“),Facade.php第217行中的对象(闭包) 在Facade::uu callStatic('sendResetLink',数组(数组('email'=>)admin2@beaudini.com“),对象(闭包)),在ResetsPasswords.php第35行中 密码::sendResetLink(数组('email'=>'admin2@beaudini.com“),ResetsPasswords.php第35行中的对象(闭包) 在PasswordController->postEmail(对象(请求)) 在Controller.php第256行中调用_user_func_数组(数组(对象(密码控制器),'postmail')、数组(对象(请求))) 在ControllerDispatcher.php第164行中的Controller->callAction('postmail',数组(对象(请求)) 在ControllerDispatcher.php第112行中的ControllerDispatcher->call(对象(密码控制器)、对象(路由)、“postmail”) 在ControllerDispatcher->Lightning\Routing\{Close}(对象(请求)) 在Pipeline.php第139行中调用_user_func(对象(闭包)、对象(请求)) 在RedirectIfAuthenticated.php第41行的Pipeline->Illumb\Pipeline\{closure}(对象(请求))处 在重定向验证->句柄(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(重定向验证),'handle')、数组(对象(请求)、对象(闭包)) 在管道->照明\管道\{closure}(对象(请求)) 在Pipeline.php第103行中调用_user_func(对象(闭包)、对象(请求)) 在ControllerDispatcher.php第114行的Pipeline->then(object(Closure))处 在ControllerDispatcher->callWithinStack(object(PasswordController)、object(Route)、object(Request)、object(postmail)中的ControllerDispatcher.php第69行 在Route.php第203行的ControllerDispatcher->dispatch(对象(路由)、对象(请求),“App\Http\Controllers\Auth\PasswordController”、“postmail”) 在Route.php第134行的Route->runWithCustomDispatcher(对象(请求))处 在Router.php第704行的Route->run(对象(请求))处 在路由器->照明\路由\{closure}(对象(请求)) 在Pipeline.php第139行中调用_user_func(对象(闭包)、对象(请求)) 在管道->照明\管道\{closure}(对象(请求)) 在Pipeline.php第103行中调用_user_func(对象(闭包)、对象(请求)) 在Router.php第706行的Pipeline->then(object(Closure))处 在Router.php第671行中的Router->runRouteWithinStack(object(Route),object(Request)) 在Router.php第631行的Router->dispatchToRoute(对象(请求))处 在Kernel.php第236行的路由器->分派(对象(请求)) 在内核->照亮\基础\ Http\{closure}(对象(请求)) 在Pipeline.php第139行中调用_user_func(对象(闭包)、对象(请求)) 在Debugbar.php第49行的管道->照明\管道\{closure}(对象(请求))处 在调试栏->句柄(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(Debugbar),'handle')、数组(对象(请求)、对象(闭包)) 在VerifyCsrfToken.php第50行的管道->照明\管道\{closure}(对象(请求))处 在VerifyCsrfToken->handle(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(VerifyCsrfToken),'handle')、数组(对象(请求)、对象(闭包)) 在ShareErrorsFromSession.php第49行的Pipeline->illumb\Pipeline\{closure}(对象(请求))中 在ShareErrorsFromSession->handle(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(ShareErrorsFromSession),'handle')、数组(对象(请求)、对象(闭包)) 在StartSession.php第62行的Pipeline->illumb\Pipeline\{closure}(对象(请求))中 开始时会话->句柄(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(array(object(StartSession),'handle')、array(object(Request)、object(Closure)) 在AddQueuedCookiesToResponse.php第37行的管道->照明\管道\{closure}(对象(请求)) 在AddQueuedCookiesToResponse->handle(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(addqueuedcookiestresponse),'handle')、数组(对象(请求)、对象(闭包)) 在EncryptCookies.php第59行的Pipeline->illumb\Pipeline\{closure}(对象(请求))处 在加密cookies->handle(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(EncryptCookies),'handle')、数组(对象(请求)、对象(闭包)) 在checkformintenancemode.php第42行的Pipeline->illumb\Pipeline\{closure}(对象(请求))中 在CheckFormIntenanceMode->handle(对象(请求)、对象(关闭)) 在Pipeline.php第124行中调用_user_func_数组(数组(对象(checkformintenancemode),'handle')、数组(对象(请求)、对象(闭包)) 在管道->照明\管道\{closure}(对象(请求)) 在Pipeline.php第103行中调用_user_func(对象(闭包)、对象(请求)) 在Kernel.php第122行的Pipeline->then(object(Closure))中 在Kernel.php第87行的Kernel->sendRequestThroughRouter(对象(请求))处 在index.php第54行的Kernel->handle(对象(请求))处
跟踪堆栈跟踪

PasswordBroker.php第237行

失败,因为
DatabaseUserProvider
retrieveByCredentials
返回一个
GenericUser
对象,not namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Auth\Authenticatable as AuthenticableTrait; use Illuminate\Contracts\Validation\Validator; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Auth\Passwords\CanResetPassword; use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; class customer extends Model implements AuthenticatableContract,CanResetPasswordContract { //protected $primaryKey = 'customerId'; use AuthenticableTrait,CanResetPassword; use ValidatesRequests; protected $fillable=['name','email','password','country','favorite','gender','image']; protected $hidden = [ 'password', 'remember_token', ]; }
<?php
    namespace App;
    use Eloquent;
    // use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Contracts\Auth\Authenticatable;
    use Illuminate\Auth\Authenticatable as AuthenticableTrait;
    use Illuminate\Auth\Passwords\CanResetPassword;
    use Illuminate\Contracts\Auth\CanResetPassword as
               CanResetPasswordContract;

    class User extends Eloquent implements
             Authenticatable,CanResetPasswordContract        

     {
         use AuthenticableTrait,CanResetPassword;
         .......
         .......
     }