1

我正在尝试使用 Laravel 实现一个非常简单的身份验证机制。

我需要保护某些路由,以便可以从特定 IP 地址查看它们。

我想做这个:

if ($_SERVER['REMOTE_ADDR'] != '123.45.67.89') {
    return Redirect::away('some url');
}

我怎样才能用警卫来实现这一点?

4

1 回答 1

1

您可以通过使用中间件来实现这一点,因为它用于您正在尝试做的事情。

通过执行创建一个新的中间件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...
}
于 2020-01-08T14:15:59.717 回答