Laravel 5.3 - 未按要求设置会话存储

Laravel 5.3 - Session store not set on request

我的 Laravel 应用程序中添加了电子邮件验证系统。我已经为它使用了 "jrean's" 包。

现在我想覆盖 VerifiesUsers 特征中的 getVerification() 函数。为此,我在 RegisterController 中添加了一个同名函数。

public function getVerification(Request $request, $token)

{    

 $this->validateRequest($request);

 try {
    UserVerification::process($request->input('email'), $token, $this->userTable());
 } catch (UserNotFoundException $e) {
    return redirect($this->redirectIfVerificationFails());
 } catch (UserIsVerifiedException $e) {
    return redirect($this->redirectIfVerified());
 } catch (TokenMismatchException $e) {
    return redirect($this->redirectIfVerificationFails());
 }

 $request->session()->flash('message', 'Email address has been successfully verified');
 return redirect($this->redirectAfterVerification());
}

但是当我的函数根据验证调用被调用时,我收到错误 "Session store not set on request." 错误。我不确定它到底是什么意思以及如何解决它。

发生这种情况的原因是因为包中声明的路由没有放在 web 中间件中。

要解决这个问题,您可以将该包中的路由添加到您的 routes/web.php 中。路线是:

Route::get('email-verification/error', 'Auth\RegisterController@getVerificationError')->name('email-verification.error');
Route::get('email-verification/check/{token}', 'Auth\RegisterController@getVerification')->name('email-verification.check');

您只需确保 config/app.php 中的 Jrean\UserVerification\UserVerificationServiceProvider::class, 行位于 App 服务提供商上方(但在 Illuminate 服务提供商下方).

希望对您有所帮助!