我想创建一个自定义中间件,只有在用户通过身份验证且电子邮件是某个电子邮件才能访问/ admin页面时。
虽然,当我指定自定义路线然后重定向时,它总是说太多重定向..
简短说明。
我的中间件名为' admin.verify'
路线档案
Route::get('/admin', 'AdminController@index')->name('admin.index');
AdminController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AdminController extends Controller
{
public function __construct(){
$this->middleware(['auth', 'admin.verify']);
}
public function index(){
return view('admin.test');
}
}
中间件:
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::User()->email == 'Tester@gmail.com') {
return $next($request);
} else {
return redirect()->route('home');
}
我的家乡路线:
GET|HEAD | home | home| App\Http\Controllers\HomeController@index | web,auth
家庭控制器:
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('home');
}
}
答案 0 :(得分:1)
使用$this->middleware ('admin.verify')
代替$this->middleware(['auth, admin.verify]');
。您收到的重定向错误太多,因为管理中间件和构造函数都在检查用户是否经过身份验证。
答案 1 :(得分:0)
问题是,当您访问本地路由时,将调用auth.verify方法,当该方法失败时,它将被重定向到本地本身,从而创建一个循环,因此重定向错误太多。
更改auth.verify中间件中的else条件以重定向到另一个页面,如/ login