Laravel でメール認証をするとき登録時にログイン状態にしない。
Laravel でメール認証を設定すると、自動的にログイン状態になってしまいます。それを避ける方法です。
auth ミドルウェアを外します。
app/Http/Controllers/Auth/VerificationController.php
public function __construct()
{
$this->middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
↓ auth ミドルウェアをコメントアウト
public function __construct()
{
// $this->middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
VerificationController.phpに verify メソッドを追加する
app/Http/Controllers/Auth/VerificationController.php
/**
*
* メールアドレス確認(メソッドのオーバーライド)
*
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*
*/
public function verify(Request $request)
{
$user = \App\User::find($request->route('id'));
if (!hash_equals((string) $request->route('hash'), sha1($user->getEmailForVerification()))) {
throw new AuthorizationException;
}
if ($user->markEmailAsVerified())
event(new \Illuminate\Auth\Events\Verified($user));
return redirect($this->redirectPath())->with('verified', true);
}
これでokです。