2012-01-26 11 views
0

暗号化されたURLリクエストパラメータを元のYii controller/actionパスに復号化する方法が必要です。例:Yii URLの暗号化/復号化

から:http://www.site.com/feh923rfj932(暗号化)
へ:http://www.site.com/api/view/1(復号化された)

私は復号化方法を実装するために使用できるいくつかのCUrlManagerルータコールバックはありますか?

+0

基本的に、あなたはあなたの新しいデコーダ/エンコーダクラスを指す新しいルールを宣言します。 "api/view/1"から "feh923rfj932"にどうやっていったのですか? – Carsten

+0

リクエストから、URLはすでに暗号化されています。 – cetver

+0

あなたは「http://www.site.com/feh923rfj932」というリクエストを受け取ります。「feh923rfj932」は、いつものようにルーティングできるURLの何らかの形で暗号化されたバージョンだと思っています。暗号化されていますか?私はそれを得ましたか? – Carsten

答えて

4

はい、YiiはCustom Url Classes「コールバック」を使用して独自のURLロジックを実装する簡単な方法を提供します。

'rules' => array(
    '' => 'site/index', // normal URL rules 
    array(// your custom URL handler 
    'class' => 'application.components.CustomUrlRule', 
), 
), 

あなたのURLクラスは、次のようになります:依存

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); 
    } 
} 
+0

うん、しかし、それは単に経路を暗号化して、paramsを含めてはいない。質問の例はparamsを含めて暗号化されている。 –