1 创建middleware中间件
php artisan make:middleware GetCurrentTime
该命令会在 app/Http/Middleware 目录下创建一个新的GetCurrentTime.php文件。
<?php
namespace App\Http\Middleware;
use Closure;
class GetCurrentTime
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$ip=[
'172.20.31.120',
'172.20.31.110',
'172.20.31.10',
'172.20.31.12'
];
if(in_array($request->getClientIp(), $ip))
{
return $next($request);
}else{
// return redirect()->to('http://textlaravel.cc');
# 返回自定义json
$request->headers->set('Accept', 'application/json');
return response()->json(['noip' => '无权限访问','yesip'=>$ip]);
}
}
}
2 注册中间件
注册中间件分为两种:全局和路由
本文采用路由中间件
路由中使用中间件
在app\Http\Kernel.php中的protected $routeMiddleware中注册路由中间件
protected $routeMiddleware = [
'getip'=>\App\Http\Middleware\GetCurrentTime::class,
];
3 访问带中间件的路由
Route::get('/getip','TestController@getip')->middleware('getip');