[英]Additional auth middleware in Laravel 5.4
我想向用户模型添加其他中间件。 用户表中的“已批准”行为布尔值(默认为false)。 因此,当用户登录时-中间件应检查'approved'是否等于true。 如果不是,请重定向到错误页面。 我到目前为止所得到的:
<?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');
但是,它不起作用。 也没有错误。
您最好在用户登录时而不是使用中间件进行检查。
将此添加到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);
}
您缺少重定向中的返回,应该是:
return redirect('/error');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.