Php 定制中间件&x27;重定向过多';-拉维尔
我想创建一个自定义中间件,仅当用户经过身份验证并且电子邮件是访问/admin页面的特定电子邮件时,该中间件才可用 虽然,当我指定自定义路由和重定向时,它总是说重定向太多 简短解释。Php 定制中间件&x27;重定向过多';-拉维尔,php,laravel,laravel-5,middleware,laravel-middleware,Php,Laravel,Laravel 5,Middleware,Laravel Middleware,我想创建一个自定义中间件,仅当用户经过身份验证并且电子邮件是访问/admin页面的特定电子邮件时,该中间件才可用 虽然,当我指定自定义路由和重定向时,它总是说重定向太多 简短解释。 public function handle($request, Closure $next) { if (Auth::check() && Auth::User()->email == 'Tester@gmail.com') { return $next
public function handle($request, Closure $next)
{
if (Auth::check() && Auth::User()->email == 'Tester@gmail.com') {
return $next($request);
} else {
return redirect()->route('home');
}
Route::get('/admin', 'AdminController@index')->name('admin.index');
<?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');
}
}
管理员控制器:
Route::get('/admin', 'AdminController@index')->name('admin.index');
<?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');
}
}
我的回家路线:
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');
}
}
使用
$this->middleware('admin.verify')
而不是$this->middleware(['auth,admin.verify]')代码>。由于管理中间件和构造函数都在检查用户是否经过身份验证,因此您收到的重定向错误太多 问题在于,当您访问home route auth.verify方法时,会调用该方法,当该方法失败时,会将其重定向到home本身,从而创建一个循环,从而导致重定向过多错误
更改auth.verify middleware中的else条件以重定向到另一个页面,如/login显示主页
路由的定义。您的中间件应位于路由文件中,而不是Controller@Option你为什么这么说?添加有效。向问题添加了更多信息如果用户未经身份验证,auth
中间件将重定向到何处?这可能是重定向到相同的主页
路线吗?我本来就有,但还是什么都没做。同样的错误。为什么让两个中间件都检查用户是否经过身份验证会出现问题?这只是为了测试,不用担心。。我把它拿走了!