在 Laravel 5.1 中发送密码重置 link 后重定向?
Redirect after sending password reset link in Laravel 5.1?
发送密码重置后如何设置重定向路径link?
在ResetsPasswords trait中是这样的代码:
switch ($response) {
case Password::RESET_LINK_SENT:
return redirect()->back()->with('status', trans($response));
case Password::INVALID_USER:
return redirect()->back()->withErrors(['email' => trans($response)]);
}
但我不想更改供应商文件。还有别的办法吗?
您可以将 protected $redirectTo = '/dashboard';
添加到您的 PasswordController
。
所以你的控制器看起来像这样:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
protected $redirectTo = '/dashboard';
//The rest of the controller below this...
并且您可以通过将 /dashboard
更改为您希望重定向的位置来自定义路由。
您应该查看 docs 了解更多信息。
正如您在特征代码中看到的那样,成功的结果重定向回同一路由:
redirect()->back()->with('status', trans($response));
请注意with()
方法中的status
变量。这会设置一个临时会话变量,然后您可以在视图模板中使用该变量,例如通知用户邮箱设置成功。
@if (session('status'))
// ... notification that the email has been sent
@else
// ... your original form for submitting an email address
@endif
关键是,通常不需要重定向到另一个路由来告诉用户电子邮件已发送。您可以对相同的视图使用相同的路由,并在视图中创建两个代码块。一个生成用于提交电子邮件地址的表单,另一个生成成功通知。
您不需要编辑供应商文件。只需打开 /app/Http/Controllers/Auth/PasswordController.php 并在 PasswordController class
中添加以下代码行
protected $redirectPath = '/DesiredUrl';
测试于 Laravel 5.1
您会注意到 ResetsPasswords
trait 中有以下两个函数:getSendResetLinkEmailSuccessResponse
和 getSendResetLinkEmailFailureResponse
,它们在发送密码重置电子邮件后处理重定向,具体取决于是否重置邮件发送成功与否。
更改此设置的一个很好的理由是(如我的情况)您希望在发送密码重置 link 后 return 用户进入主登录屏幕。
为此,只需更改 App\Http\Controllers\Auth\PasswordController
并覆盖函数,如下所示:
protected function getSendResetLinkEmailSuccessResponse($response)
{
return redirect()->route('login')->with('status', trans($response));
}
以下内容适合我,将以下内容添加到您的 ForgotPasswordController
:
protected function sendResetLinkResponse(Request $request, $response)
{
return redirect()->route('login')->with('status', trans($response));
}
发送密码重置后如何设置重定向路径link?
在ResetsPasswords trait中是这样的代码:
switch ($response) {
case Password::RESET_LINK_SENT:
return redirect()->back()->with('status', trans($response));
case Password::INVALID_USER:
return redirect()->back()->withErrors(['email' => trans($response)]);
}
但我不想更改供应商文件。还有别的办法吗?
您可以将 protected $redirectTo = '/dashboard';
添加到您的 PasswordController
。
所以你的控制器看起来像这样:
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
class PasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
protected $redirectTo = '/dashboard';
//The rest of the controller below this...
并且您可以通过将 /dashboard
更改为您希望重定向的位置来自定义路由。
您应该查看 docs 了解更多信息。
正如您在特征代码中看到的那样,成功的结果重定向回同一路由:
redirect()->back()->with('status', trans($response));
请注意with()
方法中的status
变量。这会设置一个临时会话变量,然后您可以在视图模板中使用该变量,例如通知用户邮箱设置成功。
@if (session('status'))
// ... notification that the email has been sent
@else
// ... your original form for submitting an email address
@endif
关键是,通常不需要重定向到另一个路由来告诉用户电子邮件已发送。您可以对相同的视图使用相同的路由,并在视图中创建两个代码块。一个生成用于提交电子邮件地址的表单,另一个生成成功通知。
您不需要编辑供应商文件。只需打开 /app/Http/Controllers/Auth/PasswordController.php 并在 PasswordController class
中添加以下代码行 protected $redirectPath = '/DesiredUrl';
测试于 Laravel 5.1
您会注意到 ResetsPasswords
trait 中有以下两个函数:getSendResetLinkEmailSuccessResponse
和 getSendResetLinkEmailFailureResponse
,它们在发送密码重置电子邮件后处理重定向,具体取决于是否重置邮件发送成功与否。
更改此设置的一个很好的理由是(如我的情况)您希望在发送密码重置 link 后 return 用户进入主登录屏幕。
为此,只需更改 App\Http\Controllers\Auth\PasswordController
并覆盖函数,如下所示:
protected function getSendResetLinkEmailSuccessResponse($response)
{
return redirect()->route('login')->with('status', trans($response));
}
以下内容适合我,将以下内容添加到您的 ForgotPasswordController
:
protected function sendResetLinkResponse(Request $request, $response)
{
return redirect()->route('login')->with('status', trans($response));
}