【问题标题】:Custom Middleware - 'Too Many Redirects' - Laravel自定义中间件 - “重定向过多” - Laravel
【发布时间】:2018-04-14 00:03:21
【问题描述】:

我想创建一个自定义中间件,只有当用户通过身份验证并且电子邮件是特定电子邮件时才能访问 /admin 页面。

虽然,当我指定我的自定义路由然后重定向时,它总是说重定向太多..

简短说明。

  1. 用户登录 -> 重定向到 /home。 (作品)
  2. 如果用户尝试访问 /admin 并且他们的电子邮件与中间件中指定的电子邮件不同,请重定向到 /home。
  3. 如果是真的,让他们进入 /admin

我的中间件叫做“admin.verify”

路线文件:

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');
    }
}

中间件:

 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');
    }
}

【问题讨论】:

  • 显示你的home路由的定义。
  • 你的中间件应该在路由文件中而不是在控制器中
  • @Option 为什么这么说?添加middleware to a controller 有效。
  • 向问题添加了更多信息
  • 如果用户未通过身份验证,auth 中间件会重定向到哪里?会不会是重定向到相同的home 路由?

标签: php laravel laravel-5 middleware laravel-middleware


【解决方案1】:

使用$this-&gt;middleware ('admin.verify') 代替$this-&gt;middleware(['auth, admin.verify]');。您收到太多重定向错误,因为管理中间件和构造函数都在检查用户是否经过身份验证。

【讨论】:

  • 我本来就有这个,现在什么也没做。同样的错误。
  • 为什么两个中间件都检查用户是否经过身份验证会出现问题?
  • 只是为了测试,不用担心..我删除了它!
【解决方案2】:

问题是,当您访问主路由时,auth.verify 方法被调用,当它失败时,它会被重定向到主路由本身创建一个循环,因此重定向错误太多。

更改 auth.verify 中间件中的 else 条件以重定向到另一个页面,例如 /login

【讨论】:

    猜你喜欢
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2020-04-18
    • 2021-01-11
    相关资源
    最近更新 更多