如何在 Lumen 6x 中实现默认 Laravel 重置密码
Posted
技术标签:
【中文标题】如何在 Lumen 6x 中实现默认 Laravel 重置密码【英文标题】:How to Implement Default Laravel Reset Password in Lumen 6x 【发布时间】:2020-03-11 01:50:02 【问题描述】:我是 Laravel / Lumen 框架的新手,我正在尝试将 Laravel https://laravel.com/docs/5.7/passwords 的默认重置密码特征复制到我的 Lumen 项目中。但是,当我发布到 sumbit 电子邮件端点时,我偶然发现了这个错误。
遇到错误 "message":"Target class [auth.password] does not exist."
我的路线
$router->post('password/email', 'AuthController@postEmail');
方法
public function postEmail(Request $request)
return $this->sendResetLinkEmail($request);
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function sendResetLinkEmail(Request $request)
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
// dd($request->all());
$response = $this->broker()->sendResetLink(
$request->only('email')
);
return $response == Password::RESET_LINK_SENT
? response()->json(true)
: response()->json(false);
它使用这个类use Illuminate\Support\Facades\Password;
我认为错误是由这种方法引发的
protected static function getFacadeAccessor()
return 'auth.password';
我看到这个getFacadeAccesor返回字符串注册在namespace Illuminate\Foundation;
但我在我的 Lumen 供应商文件夹中找不到此文件。有什么解决方法吗?谢谢!
【问题讨论】:
请复制粘贴代码,不要上传图片 已编辑。 @albus_severus 【参考方案1】:您可以尝试在bootstrap/app.php
注册Illuminate\Auth\Passwords\PasswordResetServiceProvider
服务提供者:
...
// $app->register(App\Providers\EventServiceProvider::class);
$app->register(Illuminate\Auth\Passwords\PasswordResetServiceProvider::class);
这个服务提供者是为auth.password
添加绑定的:
protected function registerPasswordBroker()
$this->app->singleton('auth.password', function ($app)
return new PasswordBrokerManager($app);
);
$this->app->bind('auth.password.broker', function ($app)
return $app->make('auth.password')->broker();
);
这只是解决了auth.password
绑定,您还有其他问题需要处理。
您的用户将需要使用 Illuminate\Auth\Passwords\CanResetPassword
特征,但也需要使用 Illuminate\Notifications\Notifiable
特征,因为未安装 Illuminate 包,您将不会拥有。
您不必使用密码代理的sendResetLink
,它在用户上使用notify
方法(来自Notifiable
),并且至少要自己构建这部分功能。
不幸的是,如果您开始需要 Lumen 不附带的 Laravel 框架(Illuminate 包),那么您通常会朝着使用 Laravel 框架而不是 Lumen 的方向前进。
【讨论】:
谢谢!我从 laravel 安装了照明包以上是关于如何在 Lumen 6x 中实现默认 Laravel 重置密码的主要内容,如果未能解决你的问题,请参考以下文章