123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- /**
- * Created by PhpStorm.
- * User: zhengmingwei
- * Date: 2019/10/22
- * Time: 9:34 下午
- */
- namespace addons\unishop\controller;
- use app\common\controller\Api;
- use think\Cache;
- use think\Lang;
- /**
- * 基础类
- * @ApiInternal
- */
- class Base extends Api
- {
- /**
- * 无需鉴权的方法,但需要登录
- * @var array
- */
- protected $noNeedRight = ['*'];
- /**
- * 允许频繁访问的接口(方法格式:小写)
- * @var array
- */
- protected $frequently = [];
- /*public function _initialize()
- {
- parent::_initialize();
- $this->loadUniShopLang();
- $this->limitVisit();
- }*/
- public function __construct()
- {
- parent::__construct();
- $this->loadUniShopLang();
- $this->limitVisit();
- }
- /**
- * 限制接口访问频率
- * @param int $millisecond
- * @ApiInternal
- */
- public function limitVisit_bak($millisecond = 200) {
- //$millisecond = $this->request->request('millisecond', $millisecond);
- // 限制200毫秒 防止1秒两刀 (双击甚至三击,同一时间导致接口请求两次以上)
- $action = $this->request->action();
- if (!in_array($action, $this->frequently) && $this->auth && $this->auth->isLogin() && $millisecond > 0) {
- $controller = $this->request->controller();
- if (Cache::has($controller.'_'.$action.'_'.$this->auth->id)) {
- if (Cache::get($controller.'_'.$action.'_'.$this->auth->id) + $millisecond > \addons\unishop\model\Config::getMillisecond()) {
- $this->error(__('Frequent interface requests'));
- }
- }
- Cache::set($controller.'_'.$action.'_'.$this->auth->id, \addons\unishop\model\Config::getMillisecond(), 1);
- }
- }
- public function limitVisit($millisecond = 200) {
- $action = $this->request->action();
- if (!in_array($action, $this->frequently) && $this->auth && $this->auth->isLogin() && $millisecond > 0) {
- $apilimit = $this->apiLimit();
- if(!$apilimit){
- $this->error('操作过于频繁');
- }
- }
- }
- /**
- * 加载语言文件
- */
- protected function loadUniShopLang()
- {
- $route = $this->request->route();
- $lang = $this->request->header('lang') ?: 'zh-cn';
- $path = ADDON_PATH . $route['addon'] . '/lang/' . $lang . '/' . str_replace('.', '/', $route['controller']) . '.php';
- Lang::load(ADDON_PATH . $route['addon'] . '/lang/'.$lang.'.php'); // 默认语言包
- Lang::load($path);
- }
- }
|