繁体   English   中英

Laravel将自定义中间件添加到Route :: auth();

[英]Laravel adding custom middleware to Route::auth();

所以我有一个用artisan make:auth生成的登录区域,它正确创建了视图和控制器,并添加了Route::auth(); 到我的routes.php ..都很好,但是现在我想将登录限制为IP列表。

我创建了一个IPRestrictions中间件,并在Kernel.php中进行了引用

中间件代码:

namespace App\Http\Middleware;

use Closure;

class IPRestrictions {

    public function handle($request, Closure $next) {

        // Allowed IPs
        $allowed = ['xxx.xxx.xxx.xxx', 'xxx.xxx.xxx.xxx', 'xxx.xxx.xxx.xxx'];

        // Get the IP address
        $ip = $request->ip();

        // Check if the ip is valid or if allowed
        if (!filter_var($ip, FILTER_VALIDATE_IP) || !in_array($ip, $allowed)) return abort(404);

        return $next($request);
    }
}

核心:

'restrict-ips' => \App\Http\Middleware\IPRestrictions::class

我试过将这种中间件应用于这样的路由:

Route::group(['middleware' => 'restrict-ips'], function() {
    Route::auth();
});

这可以在我的本地虚拟机上运行,​​但是一旦在实时服务器上,我就会收到错误消息:

达到最大功能嵌套级别“ 100”,正在中止!

我发现可以通过增加xdebug.max_nesting_level找到解决方法,但这不能解决代码中的问题。

有任何想法吗? 谢谢。

bootstrap/autoload.php文件中添加以下行:

ini_set('xdebug.max_nesting_level', 200);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM