我正在使用laravel作为我的网络应用程序,在登录时我要求输入用户名,密码,我想检查登录用户的电子邮件是否已经过验证。如果验证状态为0,我想使用名为中间件的verifiedemail将错误消息发送到登录页面。
route.php
Route::group(['middleware' => 'auth', 'superadmin'], function () {
Route::resource('/users', 'UserController');
});
Route::get('/', function () {
if (Auth::guest())
return view('/auth/login');
else
return redirect('/tests');
});
Route::resource('/tests', 'TestController');
Route::get('/sites', 'SiteController@index');
Auth::routes();
Route::get('/home', 'HomeController@index');
Redirectedifauthenticated.php< ---中间件文件
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
verifiedemail.php< ---中间件文件
public function handle($request, Closure $next)
{
if ( Auth::check() && Auth::user()->isVerifiedEmail() )
{
return redirect('/login');
}
return $next($request);
}
kernel.php
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'superadmin' => 'App\Http\Middleware\SuperAdmin',
'verifiedemail' => 'App\Http\Middleware\VerifiedEmail',
];
}
我认为这些是我必须改变的文件,但我必须改变的地方和地点是我的问题。请事先帮助感谢。
答案 0 :(得分:1)
如果您正在使用默认的laravel身份验证,则可以在Illuminate\Auth\Events\Attempting
上添加一个侦听器,该侦听器会在每次登录尝试时触发,并在侦听器中进行验证。
的更多信息 的更多信息