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
服务提供商下方).
希望对您有所帮助!
我的 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
服务提供商下方).
希望对您有所帮助!