控制器:

class Address extends BaseController
{//前置操作protected $beforeActionList = ['checkPrimaryScope' => ['only' => 'createOrUpdateAddress,getUserAddress']];/*** 获取用户地址信息* @return UserAddress* @throws UserException*/public function getUserAddress(){$uid = Token::getCurrentUid();$userAddress = UserAddress::where('user_id', $uid)->find();if(!$userAddress){throw new UserException(['msg' => '用户地址不存在','errorCode' => 60001]);}return $userAddress;}/*** 更新或者创建用户收获地址*/public function createOrUpdateAddress(){$validate = new AddressNew();$validate->goCheck();$uid = TokenService::getCurrentUid();$user = User::get($uid);if(!$user){throw new UserException(['code' => 404,'msg' => '用户收获地址不存在','errorCode' => 60001]);}$userAddress = $user->address;// 根据规则取字段是很有必要的,防止恶意更新非客户端字段$data = $validate->getDataByRule(input('post.'));if (!$userAddress ){// 关联属性不存在,则新建$user->address()->save($data);}else{// 存在则更新
//            fromArrayToModel($user->address, $data);// 新增的save方法和更新的save方法并不一样// 新增的save来自于关联关系// 更新的save来自于模型$user->address->save($data);}return new SuccessMessage();}
}

service\Token:

 /*** 当需要获取全局UID时,应当调用此方法*而不应当自己解析UID**/public static function getCurrentUid(){$uid = self::getCurrentTokenVar('uid');$scope = self::getCurrentTokenVar('scope');if ($scope == ScopeEnum::Super){// 只有Super权限才可以自己传入uid// 且必须在get参数中,post不接受任何uid字段$userID = input('get.uid');if (!$userID){throw new ParameterException(['msg' => '没有指定需要操作的用户对象']);}return $userID;}else{return $uid;}}/*** 检查操作UID是否合法* @param $checkedUID* @return bool* @throws Exception* @throws ParameterException*/public static function isValidOperate($checkedUID){if(!$checkedUID){throw new Exception('检查UID时必须传入一个被检查的UID');}$currentOperateUID = self::getCurrentUid();if($currentOperateUID == $checkedUID){return true;}return false;}public static function verifyToken($token){$exist = Cache::get($token);if($exist){return true;}else{return false;}}

UserException:

class UserException extends BaseException
{public $code = 404;public $message = '用户不存在';public $errCode=60000;
}

baseValidate:

    //根据数据的规则,参数过滤显示public function getDataByRule($arrays){if (array_key_exists('user_id',$arrays) | array_key_exists('uid',$arrays)){//不允许包含user_id或者uid,防止恶意覆盖user_id外键throw new ParameterException(['msg'=>'参数中包含有非法的参数名user_id或者uid']);}$newArray = [];foreach ($this->rule as $key => $value){$newArray[$key] = $arrays[$key];}return $newArray;}

thinkphp5地址的获取和修改接口过程相关推荐

  1. vue打包后获取不到数据_vue 打包后,如何修改接口地址?

    bug收集:专门解决与收集bug的网站 网址:www.bugshouji.com 01背景 在 vue 项目中,我们可以通过不同的环境,访问不同的服务器. 虽然可以使用环境的切换,但是在打包成html ...

  2. vue中使用pdf.js插件打包后不显示插件及打包后动态修改接口地址

    最近写了一个项目 需要在线展示pdf 实现方法是下载该插件并解压放到 static文件夹中 地址:http://mozilla.github.io/pdf.js/ 我在项目中使用iframe嵌套的方式 ...

  3. centos7修改ip地址自动获取_南京课工场IT培训:如何搭建DHCP服务器及自动获取IP地址及相关操作...

    DHCP服务相关理论知识 DHCP服务分为以下三点, IP地址(例:192.168.1.0) 子网掩码(例:255.255.255.0) 网关 DHCP服务的好处: 减少管理员的工作量 避免输入错误的 ...

  4. 【接口调用】EasyCVR获取直播流接口调用过程

    EasyCVR作为一款功能完善的视频结构化智能分析平台,支持多种协议的视频流的输出,同时也能够支持语音对讲,只要前端设备带语音功能,用户即可通过EasyCVR来进行隔空喊话.同时EasyCVR开放了很 ...

  5. 分享通达信软件L2接口获取数据的执行过程

    在股票交易市场领域当中,通达信软件L2接口获取股票数据,用户根据得到的股票数据信息,做出合理的交易决策,让股票交易活动顺利进行. 通达信软件L2接口提供数据支撑,有了这些股票数据,经过了分析才能真实反 ...

  6. 获取level2行情接口Tradex接收过程

    获取level2行情接口Tradex接收过程,如下: 1.访问信的工作任务句柄,可以是tcsdk\uTraderLogin.tcsdk\uTraderLogout.tcsdk\uSend等. 5.使用 ...

  7. 获取level2行情接口API函数地址

    获取level2行情接口API函数地址.如下: 1.调用 Logoff 接口登出券商账户: 2.调用 API 具有自动断线重连功能, 应用程序只需进行简单的错误处理即可: 3.调用 GetProcAd ...

  8. vue项目打包后修改接口地址

    vue项目打包后修改接口地址 我们在做vue项目时,总会遇到开发时用的测试地址和项目上线时用到的接口地址不同,再就是项目上线后,后期需要更改接口地址的情况.然而,如果没有一个配置文件,后期更换起来就只 ...

  9. php获取接口url地址,PHP 获取完整URL地址

    /** * 获取当前完整URL * @return string */ function get_url() { $sys_protocal = isset($_SERVER['SERVER_PORT ...

  10. linux系统改ip地址 永久生效,Linux修改IP永久生效

    修改IP永久生效按以下方法: 1)修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0(eth0,第一块网卡,如果是第二块则为eth1) 按如下修改i ...

最新文章

  1. python正则表达式修饰符_python正则表达式,看完这篇文章就够了...
  2. gorm 密码字段隐藏_非常专业且免费的密码管理工具
  3. SAP S/4HANA系统Fiori UI上Adapt UI按钮显示与否的控制逻辑
  4. 网络IPC非阻塞和异步I/O
  5. WebRTC 成为 W3C 与 IETF 正式标准
  6. linux shell学习问题部分记录
  7. python在知名公司的应用
  8. pythonint函数的参数_pythonint函数怎么用
  9. linkedin 爬虫
  10. 基于Java计算器 科学计算器与标准计算器相互转化
  11. 修改文件 火车票买下铺_火车票怎么买到下铺
  12. Dynamics 365 Document Management
  13. hex文件、bin文件、axf文件的区别?
  14. 第1章第26节:如何通过幻灯片母版统一管理相同类型的幻灯片2 [PowerPoint精美幻灯片实战教程]
  15. SVN - commit报错“xxx remains in tree-confilict”
  16. 如何动手搭建一套简单的直播系统
  17. nand2tetris 布尔函数和和门逻辑路线图
  18. vue 调色器和js-web-screen-shot截图插件
  19. 湖北农商行计算机类笔试题,2019年湖北农商行笔试入门汇总提前知~
  20. HTML+CSS之背景图片的设置

热门文章

  1. 第10章 vim程序编辑器
  2. 使用pystaller打包qy图形界面遇到的问题:This application failed to start...
  3. python交互式培训网站对比(风变编程、指尖编程、扇贝编程)
  4. “易班”学生管理平台小项目 万字总结 泪目!!!
  5. 基于FPGA的数字时钟
  6. miniUI datagrid 接收不到数据显示undifined
  7. word怎么恢复保存前的文件,word文件恢复
  8. 平面几何----笛沙格定理及其应用
  9. 845 数组中的最长山脉
  10. 线性代数_1、二阶、三阶行列式、排列、逆序