1

我对 CakePHP 还很陌生,但对编程来说一点也不陌生。通常我可以很快解决问题。但是,我认为我需要一些帮助。查看 CakePHP Cookbook,它非常清楚地解释了路线。我唯一挂断的是路由别名。也许我弄错了,但就路由别名而言,我的理解是它只是一个别名。因此,原始路线也应该存在。它似乎并没有真正那样工作。

我创建了一条使用 /merchants 捕获所有内容的路线,创建了一个别名

Router::connect('/merchants/:action/*', array('controller' => 'users'));

它做它应该做的事情。如果我去 /merchants/login,它真的是 /users/login。如果我转到 /users/login,它会将我重定向到 /merchants/login。我确实在 AppController 中设置了 Auth 组件。如果我把 Auth 去掉,那么别名就可以正常工作。所以我认为Auth是罪魁祸首。我是不是有点太聪明了?有一个更好的方法吗?使用同一控制器分开登录。

4

2 回答 2

3

这当然是由于反向路由。您配置的路由使 Cake 使用/merchants/而不是/users/在解析链接时使用。

登录操作是默认的 /users/login。因此,当 Cake 将用户重定向到登录 url 时,也会在登录 url 中/users/被替换/merchants/为。

如果您想为不使用的登录强制使用特定的 URL /merchants/,您可以为它声明更具体的路由,如下所示:

Router::connect('/login',   array('controller' => 'users', 'action' => 'login'));
Router::connect('/merchants/:action/*', array('controller' => 'users'));
于 2012-12-20T10:55:00.137 回答
0

听起来/users/login您的 ACL 或身份验证设置中不允许使用。当您访问/users/loginAuth 时,发现您无权访问,因此重定向到您Auth::$loginAction(您没有发布但我认为是/merchants/login基于行为)。

确保Auth::$loginAction设置为用户控制器登录操作,而不是商家路由。这样,当需要检查访问权限时,Auth 知道该操作是允许的,因为默认情况下允许登录操作。

于 2012-12-20T15:24:11.077 回答