【发布时间】:2016-07-12 19:49:17
【问题描述】:
我正在构建一个 Angular 应用程序并希望实现密码重置。但是,默认的 laravel 配置似乎不允许使用纯 XMLHttpRequest ($http.post) 请求来执行此操作,并以 302 重定向响应。
通过在 authController 类中实现所述方法并返回 json 响应,我设法让 postLogin 和 postRegister 工作而无需发出重定向,这样做会覆盖所述方法的默认 laravel 实现。 postEmail 没有这样的运气,似乎根本没有命中该方法,我只是立即收到 302 响应。
理想情况下,除了检查他们的电子邮件之外,我根本不希望用户离开单页 Angular 应用程序。 所以 1. 用户将电子邮件发布到 postEmail -> 带有重置链接或更好的“重置代码”的电子邮件被发送到电子邮件地址 -> 用户然后将重置令牌代码输入到已经打开的网络应用程序中,或者如果它不能完成后,浏览到在新标签页中打开的重置密码页面。
我尝试这样实现 postEmail 方法:
public function postEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);
$response = Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject($this->getEmailSubject());
});
switch ($response) {
case Password::RESET_LINK_SENT:
return response()->json(['msg' => 'A reset link has been sent to your E-mail'], 200);
case Password::INVALID_USER:
return response()->json(['msg' => 'This E-mail cannot be found in our system'], 200);
}
}
另外,laravel发出的带有reset链接的邮件模板在哪里?
【问题讨论】:
-
你需要创建一个
PasswordController来扩展postEmail()方法。
标签: angularjs laravel laravel-5