1

我遇到了这个问题:

Router::connect('/',array('controller' => 'Controller','action' => 'login'));

这将显示www.mysite/controller/login为站点 URL

我想www.mysite.com/controller/login用 just覆盖www.mysite.com,但仍然转到登录页面。有谁知道如何用 Cake 2.x 做到这一点?

4

3 回答 3

2

行为与您描述的不完全一样。

以下是做什么的:

Router::connect('/',array('controller' => 'Controller','action' => 'login'));

是允许您www.mysite.com 在浏览器中输入,并获取www.mysite.com/controller/login呈现的视图。

它的工作方式类似于url 重写而不是重定向。因此,上述内容应按预期工作。但是,如果不是示例,请尝试以不同的方式命名您的控制器,因为这可能会导致 CakePHP 出现问题。

于 2015-12-11T15:27:55.307 回答
1

正如 Inigo 所说,Router::connect()只是将路由/URL 连接到控制器操作。因此,使用您定义的路线,您应该能够转到www.mysite.com并且您的登录操作将被提供(尽管我不确定将基本 URL 用作登录页面是否是一个好主意)。

它不会阻止www.mysite.com/controller/login工作,因为这是 CakePHP 的默认路由之一。

要禁用默认路由,您需要从以下位置删除此行routes.php:-

require CAKE . 'Config' . DS . 'routes.php';

请注意,如果您删除此行,您必须在应用程序的路由文件中为您的所有页面定义路由。这不一定是坏事,当心通往邪恶的道路是一本很好的读物。

于 2015-12-11T15:53:44.650 回答
0

当我使用“Auth”组件时,我必须在函数中添加

beforeFilter()

我的控制器这一行:

$this->Auth->allow('anAction', 'anotherAction', '**login**');

于 2015-12-15T11:30:47.613 回答