[英]Optional Email Verification in Laravel
如何在 Laravel 中使 email 驗證成為可選? 我有一條可以作為訪客訪問的路線。 但是,我希望所有經過身份驗證的用戶在訪問網站的任何部分(包括可以以訪客身份訪問的頁面)時都經過 email 驗證。
如果我要在所有路由上添加middleware('verified')
,訪客需要登錄才能訪問這些公共頁面。
例子:
Route /
或/posts/1
可以作為訪客訪問。 但是,如果用戶已登錄,我希望他們首先經過 email 驗證才能訪問它。
EnsureEmailIsVerified
( verified
) 中間件檢查用戶是否已通過身份驗證,這就是為什么它對來賓用戶不起作用的原因。
您可以創建一個新的中間件 class 稱為EnsureEmailIsVerifiedUnlessGuest
(或任何您想要的):
public function handle($request, Closure $next, $redirectToRoute = null)
{
if ( $request->user() &&
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice'));
}
return $next($request);
}
然后將其添加到app/Http/Kernel.php
文件中的$routeMiddleware
數組中:
'verified-or-guest' => \App\Http\Middleware\EnsureEmailIsVerifiedUnlessGuest::class,
然后你可以將它與你的路線一起使用
->middleware('verified-or-guest')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.