Laravel中间件永远重定向
有人能帮我吗?我得到了一个无休止的重定向,这让我疯狂了一个星期Laravel中间件永远重定向,laravel,laravel-5,laravel-middleware,Laravel,Laravel 5,Laravel Middleware,有人能帮我吗?我得到了一个无休止的重定向,这让我疯狂了一个星期 /*******路由**********/ 路由::组(['middleware'=>'auth'],函数(){ 路由::获取('/profile','UserController@profile'); //超级管理员 路由::组(['middleware'=>'admin'],函数(){ 路由::获取('/dashboard','UserController@dashboard'); }); //超级管理员 路由::组(['mid
/*******路由**********/
路由::组(['middleware'=>'auth'],函数(){
路由::获取('/profile','UserController@profile');
//超级管理员
路由::组(['middleware'=>'admin'],函数(){
路由::获取('/dashboard','UserController@dashboard');
});
//超级管理员
路由::组(['middleware'=>'superadmin'],函数(){
路由::获取('/settings','UserController@settings');
});
});
/******中间件*******/
//管理员
公共函数句柄($request,Closure$next)
{
if(Auth::check()){
if(User::isAdmin()){//验证超级管理员还是管理员
返回$next($request);
}否则{
返回重定向('/profile');
}
}
//超级管理员
公共函数句柄($request,Closure$next)
{
if(Auth::check()){
if(User::issuerAdmin()){//validate if superadmin
返回$next($request);
}否则{
返回重定向('/profile');
}
}
}
好的,只是再次更新了代码,但仍然有问题
永远重定向有什么想法吗
// SuperAdmin
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (!User::isSuperAdmin()) {
return new RedirectResponse(url('/profile'));
}
}
return $next($request);
}
// admin and superadmin
public function handle($request, Closure $next)
{
if (Auth::check()) {
if (!User::isAdmin()) {
return new RedirectResponse(url('/profile'));
}
}
return $next($request);
}
// auth
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
return redirect()->guest('/login');
}
}
return $next($request);
}
修复了它。原因是$middleware和$routeMiddleware都使用相同的中间件
protected $middleware = [
'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
'Illuminate\Cookie\Middleware\EncryptCookies',
'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
'Illuminate\Session\Middleware\StartSession',
'Illuminate\View\Middleware\ShareErrorsFromSession',
'App\Http\Middleware\VerifyCsrfToken',
//'App\Http\Middleware\SuperAdminMiddleware',
//'App\Http\Middleware\AdminMiddleware',
];
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'admin' => 'App\Http\Middleware\AdminMiddleware',
'superadmin' => 'App\Http\Middleware\SuperAdminMiddleware',
];
请将代码作为问题的一部分,外部链接可能会随着时间的推移而变得不可访问。您正在访问的触发重定向循环的URL是什么?还请发布上面的
auth
中间件的代码。更新代码。您能检查一下吗?我已经测试了您的更新代码,它对我来说运行正常。您是什么URLu触发重定向循环时访问?奇怪。如果im只是管理员,则几乎所有链接的问题在于,$middleware
在每个请求上运行,而$routeMiddleware
可以专门应用于路由或控制器,并且仅在需要时运行。