【问题标题】:ERR_TOO_MANY_REDIRECTS - Laravel 5.7ERR_TOO_MANY_REDIRECTS - Laravel 5.7
【发布时间】:2019-03-09 03:15:37
【问题描述】:

我使用的是 laravel 5.7。我有一个用户表,其中有一列 user_type

0 = default users
1 = Professionals
2 = Facilities
8 = Employees
9 = Managers
10 = Administrator

另一列是布尔值 is_premium,它返回真或假。

我为管理员创建了一个中间件

namespace App\Http\Middleware;

use Closure;
use Auth; 

class IsAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::user() &&  Auth::user()->usertype == 10) {
            return $next($request);
         }

        return redirect('/administration/dashboard');
    }
}

我已经在 routes/web.php 文件中使用了它

Route::group(['prefix' => 'administration', 'middleware' => 'admin'], function(){
  Route::get('/dashboard', 'Admin\DashboardController@index')->name('admin.dashboard');
});

当我访问管理仪表板路线时,它说

ERR_TOO_MANY_REDIRECTS

我知道我做错了什么......这是什么?

我假设也为其他用户类型创建中间件并在路由文件中使用。这是正确的做法吗?

【问题讨论】:

  • 只需重定向到另一个 URL。或者显示401错误信息
  • @YanDatsyuk 我没听懂你在说什么
  • 当我重定向到管理组中不存在的另一个网址时,它可以工作...
  • 更改这行代码 return redirect('/administration/dashboard');您正在进行递归重定向...只需尝试将“管理/仪表板”更改为另一个 URL,另一个路由。
  • @YanDatsyuk 如果我将其更改为“/”,只要我点击管理路线,它就会将我带到网站的主页。我在管理组中创建的任何路由都会被重定向到主页...用户的 user_type 为 10,他如何管理管理路由。对不起,我是新手,自己尝试

标签: laravel laravel-5.7


【解决方案1】:

先试错逻辑:

...
public function handle($request, Closure $next)
{
    if ( ! (Auth::user() &&  Auth::user()->usertype == 10) ) {
        return redirect('/home');
    }

    return $next($request);
}
...

【讨论】:

    猜你喜欢
    • 2017-10-04
    • 2019-07-06
    • 2019-04-15
    • 1970-01-01
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2019-06-14
    相关资源
    最近更新 更多