我想为yii2高级应用程序使用伪造的URL 下面是我要实现的示例
主页
www.example.com/er45se5t
用户页面
www.example.com/er45se5t/users/index
说明:
此处er45se5t是令牌或标识符。对于每个请求,我都需要将此令牌显示在URL中。
尝试的解决方案:
我试图在会话中保存令牌并进行设置,并将其添加到所有URL
添加了这些规则
'<token:\w+>' => 'site/index',
'<token:\w+>/<controller:\w+>' => '<controller>/index'
问题
我注销后,此会话已清除,无法将此令牌添加到URL。
所以注销后,我希望URL看起来像这样
www.example.com/er45se5t
或
www.example.com/er45se5t/site/login
答案 0 :(得分:0)
您可以添加名为CustomUrlManager的组件,其内容为:
namespace frontend\components; use yii\web\UrlManager; class CustomUrlManager extends UrlManager { public function createUrl($params) { $defaultToken='er45se5t'; if( isset($params['token']) ){ //you can add whatever here $token=$params['token']; unset($params['token']); } else { //you can add whatever here $token=$defaultToken; } $url = parent::createUrl($params); if( $url == '/' ){ return '/'.$token; }else{ return '/'.$token.$url; } } }
并在配置文件中作为组件:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'class'=>'frontend\components\CustomUrlManager',
'rules'=>[
]
],
您可以将www.example.com/重定向到默认控制器上的某些www.example.com/er45se5t