laravel 5.7中用于管理员的电子邮件验证

时间:2018-11-26 10:12:08

标签: laravel laravel-5.7 auth-guard

我要实现必须在管理路由中进行验证,我拥有管理卫士以及与管理相关的所有路由,我如何在Laravel 5.7中实现管理卫士的这一功能

2 个答案:

答案 0 :(得分:2)

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

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

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

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

说明:

看看“ EnsureEmailIsVerified”中间件的“处理”方法。

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);
}

第三个参数采用$ redirectToRoute名称

答案 1 :(得分:1)

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

  1. 创建一个自定义的中间件类,并根据需要命名, 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