我想在用户模型中添加其他中间件。用户表已经获得批准'这是布尔值(默认为false)。因此,当用户登录时 - 中间件应检查是否已批准'等于真。如果没有,请重定向到错误页面。到目前为止我得到了什么:
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class ConfirmedMiddleware
{
public function handle($request, Closure $next, $guard = null)
{
if(Auth::user()->approved != true){
redirect('/error');
}
return $next($request);
}
}
到目前为止中间件附在此处:
Route::get('/home', 'HomeController@index')->middleware('confirmed')->name('home');
然而,它不起作用。没有错误。
答案 0 :(得分:3)
当用户登录而不是使用中间件时,最好检查一下。
将其添加到LoginController
并执行任何其他检查。用户成功登录后将调用此方法。
protected function authenticated($request, $user)
{
if($user->approved != true){
return redirect('/error');
}
}
如果您仍然坚持使用中间件,请确保在Kernel.php
在app/Http/Kernel.php
'confirmed' => \App\Http\Middleware\ConfirmedMiddleware::class,
你也错过了重定向的回报。
public function handle($request, Closure $next, $guard = null)
{
if(Auth::user()->approved != true){
return redirect('/error');
}
return $next($request);
}
答案 1 :(得分:1)
你错过了重定向的回复,应该是:
return redirect('/error');