如题;
我用yii2.0构建了一个service层,我调用service的时候对参数进行过签名,在yii2.0的service端获取参数的时候我想先进行相关处理。然后将处理后的参数还原成yii能接受的。具体如下:
yii标准请求地址:http://host/?r=site/get-userinfo&id=8
签名过的请求地址:http://host/?r=site/get-userinfo¶m=这里是包含了id等相关参数的密文
并且service用的yii内置的RESTful,控制器方法如下:
class SiteController extends \yii\rest\ActiveController{
public $modelClass = '';
public function actionGetUserinfo($id) {
# 相关操作
}
}
使用标准请求地址是能访问成功的,如何能让我签名过的地址能访问呢,也就是说如何能在调用actionGetUserinfo()
方法之前让我去改变$_GET['id']
这个值,有没有提供这样的过滤器或者方法。
yii小白一枚,望各位大神不吝赐教。先谢过了!
处理参数的核心逻辑在yii\base\Action::runWithParams里面,你可以选择重写这部分,但是这会影响整个框架的所有代码。
建议是重写控制器的runAction逻辑,实现一个YourActiveController
然后,相关的逻辑继承这个控制器
两种方法
1.写一个behaviour。
2.重写beforeAction方法,在当前类,或者写个父类继承。