如何在 Lumen 6x 中实现默认 Laravel 重置密码
How to Implement Default Laravel Reset Password in Lumen 6x
我是 Laravel / Lumen 框架的新手,我正在尝试将 Laravel https://laravel.com/docs/5.7/passwords 的默认重置密码特征复制到我的 Lumen 项目中。但是,当我 post 提交电子邮件端点时,我偶然发现了这个错误。
遇到错误 {"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);
}
并使用此 class 使用 Illuminate\Support\Facades\Password;
而且我认为此方法引发了错误
protected static function getFacadeAccessor()
{
return 'auth.password';
}
}
我看到这个 getFacadeAccessor return 字符串注册在 命名空间 Illuminate\Foundation;
但我在我的 Lumen vendor 文件夹中找不到这个文件。有什么解决方法吗?谢谢!
您可以尝试在 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 框架的新手,我正在尝试将 Laravel https://laravel.com/docs/5.7/passwords 的默认重置密码特征复制到我的 Lumen 项目中。但是,当我 post 提交电子邮件端点时,我偶然发现了这个错误。
遇到错误 {"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);
}
并使用此 class 使用 Illuminate\Support\Facades\Password;
而且我认为此方法引发了错误
protected static function getFacadeAccessor()
{
return 'auth.password';
}
}
我看到这个 getFacadeAccessor return 字符串注册在 命名空间 Illuminate\Foundation;
但我在我的 Lumen vendor 文件夹中找不到这个文件。有什么解决方法吗?谢谢!
您可以尝试在 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 的方向前进,经常。