这件事的需求是这样:
我们使用微信公众平台的开发模式搭建好了一个后台,这样就不得不把运营人员设置的关键词回复加进来。当然我们不希望每次运营人员想修改时,都让我们来直接改代码。于是我就为他们写了个关键词回复管理台。
我首先想到的是用auth写个登陆系统,但因为我之前将users这张表赋予了其他用途,就需要建个新表,将auth的基础配置改改(当然最后我没改成功)。于是我想不如直接将这个后台的访问设个白名单吧!
因此我访问了laravel的官方文档。大致步骤分为:
使用artisan make一个中间件。
php artisan make:middleware AgeMiddleware
在kernel.php注册这个中间件;
在routes.php为你的请求添加中间件,官网的示例用法是:
Route::get('admin/profile', ['middleware' => 'AgeMiddleware', function () {
//
}]);
编辑中间件代码。我的白名单代码很简单:
if ( in_array($request->getClientIp(), ['xx.xxx.xxx.xxx'])){
return $next($request); }
现在我遇到了一个坑是这样:
在routes.php里,我希望对如下请求添加中间件:
Route::resource('keyword', 'KeywordController');
官网示例代码里,没有写明resource下改如何添加中间件。
经过一番google,我在KeywordController里添加:
public function __construct()
{
$this->middleware('checkIP');
}
于是搞定。