🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 应用层之间的安全机制: 应用token | 应用名 | 应用token | 值| | --- | --- | --- | | app | APPTOKEN | (如)201712061020 | | api | APPTOKEN | (如) 201712061020 | 应用token,基于各应用间的独立配置文件,每个独立应用之间通信如app应用与api应用进行通信,app需要将自身的APPTOKEN传递到api应用中,api应用将APPTOKEN跟自身的独立配置文件中的APPTOKEN比较是否一致 如果一直通过请求,不一致则是非法请求。 #### 示例: 配置app应用token ~~~ /app/config.php return array( //应用独立配置 'APPTOKEN'=>'201712061020',//app应用token ); ~~~ 配置api应用token ~~~ /addons/api/config.php return array( //应用独立配置 'APPTOKEN'=>'201712061020',//api应用token ); ~~~ #### app应用通过curl请求api接口 ~~~ public function index(){ global $_G; //请求api应用,并把app_token带过去 $api=new Api(); //获取app下面config.php独立配置文件的应用token $appToken=$_G['config']['APPTOKEN']; //将appToken做为请求header参数带过去 self::$curl->setHeader('APPTOKEN',$appToken); $result=$api->get('http://test.calfbbs.com/calfbbs/index.php?m=api&c=Advertisement&a=getAdvertisementList'); } ~~~ #### api应用接收请求并比较token是否一致 ~~~ /** * 应用token验证 */ public function vaildateAppToken(){ global $_G; $header=getallheaders(); //验证传递过来的API_TOKEN跟api应用配置的API_TOKEN是否一致 if($_G['config']['APPTOKEN'] !=@$header['APPTOKEN']){ $this->returnMessage(2001,'API_TOKEN验证错误,请检查应用TOKEN是否配置正确',false); } } ~~~ 这里的应用验证是采用header头参数传递过去