2016-04-04 122 views
5

我想只允许某些IP地址来访问该寄存器路线,但我发现了错误类型:只允许某些IP地址在Laravel注册用户5.2

Argument 1 passed to App\Http\Controllers\Auth\AuthController::showRegistrationForm() must be an instance of Illuminate\Http\Request, none given, called in directory\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 19

这里是我的showRegistrationForm方法在AuthController

public function showRegistrationForm(Request $request) { 
    $ip = $request->ip(); 

    if ($ip == "148.124.0.1") { 
     return redirect("register"); 
    } else { 
     return redirect("home"); 
    } 
} 

有没有人知道我该怎么做到这一点?

+0

你明白了什么,当你的DD($请求)? – Frisbetarian

+0

正在从您当地的环境进行测试 –

+0

@ maytham-ɯɐɥʇʎɐɯ是的。 –

回答

18

在控制器而不是检查请这样

php artisan make:middleware IpMiddleware 

代码

<?php 

namespace App\Http\Middleware; 

use Closure; 

class IpMiddleware 
{ 

    public function handle($request, Closure $next) 
    { 
     if ($request->ip() != "192.168.0.155") { 
     // here insted checking single ip address we can do collection of ip 
     //address in constant file and check with in_array function 
      return redirect('home'); 
     } 

     return $next($request); 
    } 

} 

然后添加新的中间件类在app/Http/Kernel.php类的$ middleware财产。

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    'ipcheck' => \App\Http\Middleware\Ip::class, 
]; 

然后申请middelware路线

Route::get('/', ['middleware' => ['ipcheck'], function() { 
    // your routes here 
}]); 

希望此举能帮助你

+0

谢谢@pramod kadam,我会尝试这种方法。 –

+0

谢谢..只是为了补充一点,如果你有像我这样的公共存储库,最好使用'.env'来存储该ip地址... –

+0

''ipcheck'=> \ App \ Http \ Middleware \ Ip :: class',应该是''ipcheck'=> \ App \ Http \ Middleware \ IpMiddleware :: class' – Paddy

相关问题