admin guard laravel 5.7 中的电子邮件验证

Email Verification in laravel 5.7 for admin guard

我想在管理员路由中实现必须验证,我有管理员守卫和所有与管理员相关的路由,我如何在 Laravel 5.7

中为管理员守卫实现此功能

这就是我让它为我工作的方式。

  1. 创建自定义中间件 class 并根据需要命名,在我的例子中,我将其命名为 AdminEmailIsVerified
    class AdminEmailIsVerified extends EnsureEmailIsVerified
    {
      public function handle($request, Closure $next)
      {
         if (! $request->user('admin') ||
            ($request->user('admin') instanceof Admin &&//MustVerifyEmail &&
                ! $request->user('admin')->hasVerifiedEmail())) {
            return $request->expectsJson()
                ? abort(403, 'Your email address is not verified.')
                : Redirect::route('admin.verification.notice');
          }
          return $next($request);
        }
    }

请注意,instance of MustVerifyEmail 不起作用,这就是我使用 Admin 模型的原因。

  1. 像往常一样在你的内核中注册它,

    'admin.verified' => \App\Http\Middleware\AdminEmailIsVerified::class,

    $routesMiddlewareGroup

    希望对您有所帮助

Admin Dashboard - Email Verification

在laravel6、laravel7中,我们可以通过在中间件参数中传递路由名称来实现。例如:

Route::middleware('verified:admin.verification.notice')->get('/', 'AdminController@home')->name('home');

此处“dashboard.verification.notice”是我的管理员验证电子邮件路由的名称。

============================================= ======================

解释:

查看“EnsureEmailIsVerified”中间件的“handle”方法。

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::route($redirectToRoute ?: 'verification.notice');
    }

    return $next($request);
}

它的第 3 个参数采用 $redirectToRoute 名称