2016-04-04 15 views
5

特定のIPアドレスがLaravelにユーザーを登録することができますが、私は型エラーになっています:は、私だけが唯一の特定のIPアドレスが登録ルートにアクセスすることを可能にしようとしている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

役立ちますか? – Frisbetarian

+0

あなたの地域の環境からテストしています –

+0

@ maytham-ɯɐɥʇʎɐɯはい私はそうです。 –

答えて

18

は、代わりに、あなたのapp/Http/Kernel.phpクラスの$ middlewareプロパティに新しいミドルウェアクラスを追加し、コントローラにこの方法をチェックしてください

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

} 

をチェックします。

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, 
]; 

その後、ルート

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

にmiddelwareを適用するには、それは期待しているあなたは($リクエスト)をddをするとき、あなたは何を得るのですか

+0

ありがとう@pramod kadam、私はこのアプローチを試してみましょう。 –

+0

ありがとう..これに追加するだけで、私のような公開リポジトリがあれば、 '.env'を使ってそのIPアドレスを保存する方が良いです... –

+0

' 'ipcheck '=> \ App \ Http \ Middleware \ Ip :: class'は '' ipcheck '=> \ App \ Http \ Middleware \ IpMiddleware :: class'でなければなりません – Paddy

関連する問題