laravel 8 中的电子邮件验证后如何更改重定向?

how to change redirect after auth Email verification in laravel 8?

邮箱验证成功注册后,我有2个条件。

  1. 如果新用户select计划从主页重定向到注册页面提交表单。然后将获得电子邮件验证 link,电子邮件验证后我想直接重定向到结帐。 Plan id 将保存 session ,所以我可以得到计划的所有细节。
  2. 如果新用户不是select主页计划,那么他可以注册并重定向到仪表板

但在 laravel 中,电子邮件验证后总是重定向到主页。但是我不想再重定向到主页了。

如何做到这一点?哪里可以做编码部分?

验证控制器


 use VerifiesEmails;

    /**
     * Where to redirect users after verification.
     *
     * @var string
     */
    protected $redirectTo = RouteServiceProvider::HOME;

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('signed')->only('verify');
        $this->middleware('throttle:6,1')->only('verify', 'resend');
    }
    
    protected function verified(Request $request)
    {
        $request->session()->flash('alert','Your Email is verfied');
    }


路线

  public function emailVerification()
    {
        return function () {
            $this->get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
            $this->get('email/verify/{id}/{hash}', 'Auth\VerificationController@verify')->name('verification.verify');
            $this->post('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
        };
    }

据我所见,两人接近...

  1. 在您将它们路由到的控制器操作中 Auth\VerificationController@verify 进行检查以确保标记 尚未设置,设置标志,如果未设置,请将您的重定向 在那个逻辑之后。所以对于路线来说应该是这样的...

    return redirect()->route('route.name', [$veriYouWantToSendAlong]);

或者到有错误的静态页面。

return redirect()->route('page/name')->withErrors(['Some error here']);
  1. 在你的 Laravel 授权控制器中应该是受保护的 $redirectTo = '/home';操作,您可以将其更改为仪表板或登录后您想发送给他们的任何地方。

添加一个名为 redirectTo() 的方法。存在就会调用

public function redirectTo()
{
   // put your routing logic here
}

函数应该return一个字符串url去。