我正在尝试使用 Laravel 实现一个非常简单的身份验证机制。
我需要保护某些路由,以便可以从特定 IP 地址查看它们。
我想做这个:
if ($_SERVER['REMOTE_ADDR'] != '123.45.67.89') {
return Redirect::away('some url');
}
我怎样才能用警卫来实现这一点?
我正在尝试使用 Laravel 实现一个非常简单的身份验证机制。
我需要保护某些路由,以便可以从特定 IP 地址查看它们。
我想做这个:
if ($_SERVER['REMOTE_ADDR'] != '123.45.67.89') {
return Redirect::away('some url');
}
我怎样才能用警卫来实现这一点?
您可以通过使用中间件来实现这一点,因为它用于您正在尝试做的事情。
通过执行创建一个新的中间件php artisan make:middleware SimpleGuardMiddleware
。它将在app\Http\Middleware\SimpleGuardMiddleware.php
.
然后,在文件中,您可以编写如下内容:
public function handle($request, Closure $next)
{
if ($request->ip() != '123.45.67.89') {
return Redirect::away('some url');
}
return $next($request);
}
然后,转到app\Http\Kernel.php
,确保将其添加到您的protected $routeMiddleware
数组中。
protected $routeMiddleware = [
//.. your previous files ...
'myguard' => SimpleGuardMiddleware.php::class,
];
然后在您的路线文件中,您可以执行类似的操作
Route::group(['middleware' => 'auth'], function() {
// your routes here...
}