我要实现必须在管理路由中进行验证,我拥有管理卫士以及与管理相关的所有路由,我如何在Laravel 5.7中实现管理卫士的这一功能
答案 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)
这就是我让它为我工作的方式。
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 模型。
一如既往地将其注册到您的内核中,
'admin.verified' => \App\Http\Middleware\AdminEmailIsVerified::class,$ routesMiddlewareGroup 中的
我希望这会有所帮助