登录会从我的URL中删除slug

时间:2012-07-06 22:10:21

标签: cakephp

我正在使用Cake 2.1.3和routes.php文件,一切正常,除了登录管理,例如我想要我的网址如下:

http://mysite.com/companyx/users/login

其中companyx是slug,但是当你在浏览器中运行该url时如下:

http://mysite.com/users/login

在这个文件routes.php我定义如下:

Router::connect(
        '/:slug/users/login', // E.g. /companyx/users/login
        array('controller' => 'users', 'action' => 'login'), array(
        // order matters
        'pass' => array('slug')
        )
    );

使用其他控制器我没有问题,例如:

Router::connect(
        '/:slug/users', // E.g. /companyx/users 
        array('controller' => 'users', 'action' => 'index'), array(
        // order matters
        'pass' => array('slug')
        )
    );

最诚挚的问候;)

2 个答案:

答案 0 :(得分:0)

CakePHP具有在AuthComponent中定义的默认登录操作。 (第171行)

 /**
  * A URL (defined as a string or array) to the controller action that handles
  * logins.  Defaults to `/users/login`
  *
  * @var mixed
  */
public $loginAction = array(
    'controller' => 'users',
    'action' => 'login',
    'plugin' => null
);

您可以在自己的UsersController中使用beforeFilter覆盖此操作。

答案 1 :(得分:0)

谢谢你的回答。我用这种方式解决了这个问题:

public function beforeFilter() {
    parent::beforeFilter();
     if (!$this->request->is('post')) {
        $this->Auth->loginAction = 'this is:slug/users/login/';
     }
}

凡“这是slu”,应该是slu ..

最诚挚的问候。