我需要一种方法将加密的URL请求参数解密为原始的Yii controller/action
路径。例如:
发件人:http://www.site.com/feh923rfj932
(已加密)
致:http://www.site.com/api/view/1
(解密)
我可以使用一些CUrlManager路由器回调来实现解密方法吗?
答案 0 :(得分:4)
是的,Yii提供了一种使用Custom Url Classes“回调”实现自己的URL逻辑的简便方法。
基本上,您将声明一个指向新解码器/编码器类的新规则:
'rules' => array(
'' => 'site/index', // normal URL rules
array( // your custom URL handler
'class' => 'application.components.CustomUrlRule',
),
),
您的网址类看起来像这样:
class CustomUrlRule extends CBaseUrlRule {
public function createUrl($manager,$route,$params,$ampersand) {
return your_encrypt_method($route);
}
public function parseUrl($manager,$request,$pathInfo,$rawPathInfo) {
return your_decrypt_method($pathInfo);
}
}