通过中间件判定未登录跳转登录页并提示内容。在中间件和系统的两个路由中添加规则定义。
创建中间件
app/Http/Middleware/RedirectIfNotVerifiedAndNotLoggedIn.php
<?php
// app/Http/Middleware/RedirectIfNotVerifiedAndNotLoggedIn.php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Route;
class RedirectIfNotVerifiedAndNotLoggedIn
{
public function handle($request, Closure $next)
{
if (!$request->user() && Route::currentRouteName() === 'verification.verify') {
return Redirect::route('login')->with('status', '验证邮箱前请先登录');
}
return $next($request);
}
}
app/Http/kernel.php添加路由控制
protected $routeMiddleware = [
'redirectIfNotVerifiedAndNotLoggedIn' => \App\Http\Middleware\RedirectIfNotVerifiedAndNotLoggedIn::class,
];
登录页login.blade.php添加提示代码
{{-- 显示消息 --}}
@if (session('status'))
<div class="alert alert-info">
{{ session('status') }}
</div>
@endif
路由routes/web.php添加路由控制
Route::get('/email/verify/{id}/{hash}', function (EmailVerificationRequest $request) {
$request->fulfill();
return redirect('/home');
})->middleware(['signed', 'throttle:6,1', 'redirectIfNotVerifiedAndNotLoggedIn'])->name('verification.verify');