只允许某些IP地址在Laravel注册用户5.2
我想只允许某些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");
}
}
有没有人知道我该怎么做到这一点?
在控制器而不是检查请这样
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
}]);
希望此举能帮助你
谢谢@pramod kadam,我会尝试这种方法。 –
谢谢..只是为了补充一点,如果你有像我这样的公共存储库,最好使用'.env'来存储该ip地址... –
''ipcheck'=> \ App \ Http \ Middleware \ Ip :: class',应该是''ipcheck'=> \ App \ Http \ Middleware \ IpMiddleware :: class' – Paddy
你明白了什么,当你的DD($请求)? – Frisbetarian
正在从您当地的环境进行测试 –
@ maytham-ɯɐɥʇʎɐɯ是的。 –