2016-02-12 3 views
1

В моем веб-приложении yii я хочу скрыть или зашифровать контроллер и имя действия в URL-адресе для целей безопасности. В моей конфигурации/main.php,Шифр ​​/ Скрыть контроллер и имя действия от url

'urlManager' => array(
     'urlFormat' => 'path', 
     'rules' => array(
      '<controller:\w+>/<id:\d+>' => '<controller>/view', 
      '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
      '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
     ), 
    ), 

Теперь гиперссылка есть

http://localhost/webschool/index.php/core/student/create 

Я хочу, чтобы изменить этот адрес к,

http://localhost/webschool/ 

или

http://localhost/webschool/uUG32376HJBDwg2366Gh_308 

Пожалуйста помогите мне

Заранее спасибо .....

+0

Доу прочитал это, прежде чем спрашивать? http://www.yiiframework.com/doc/guide/1.1/en/topics.url#faking-url-suffix – SiZE

+0

[Вы не хотите шифровать параметры URL] (https://paragonie.com/blog/ 2015/09/всесторонний-гид-URL-параметр-шифрования-в-PHP). –

+0

Я пробовал, но не могу решить свою проблему. Я не знаю, как изменить свой urlmanager. Пожалуйста, помогите мне. – Arya

ответ

1

Вы можете определить свой собственный custom-url-rule-class, например:

class CustomUrlRule extends CBaseUrlRule 
{ 
    public function createUrl($manager,$route,$params,$ampersand) 
    { 
     if ($route==='core/student/create') 
     { 
      // here use your own encryption logic 
      return base64_encode($route); 
     } 
     return false; // this rule does not apply 
    } 

    public function parseUrl($manager,$request,$pathInfo,$rawPathInfo) 
    { 
     // here use your own decryption logic 
     $decoded = base64_decode($pathInfo); 
     if ($decoded==='core/student/create') { 
      return $decoded; 
     } 
     return false; // this rule does not apply 
    } 
} 

затем объявить его в разделе UrlManager вашей конфигурации:

'urlManager' => array(
    'urlFormat' => 'path', 
    'rules' => array(
     // my custom rule (first one) 
     array(
      'class' => 'application.components.CustomUrlRule', 
      'connectionID' => 'db', // if necessary for your logic 
     ), 
     '<controller:\w+>/<id:\d+>' => '<controller>/view', 
     '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>', 
     '<controller:\w+>/<action:\w+>' => '<controller>/<action>', 
    ), 
), 
Смежные вопросы