我是CakePHP的新手,但对于编程而言并不是什么新鲜事。通常我可以快速解决问题。但是我想我需要一点帮助。查看CakePHP Cookbook,它解释了很明显的路线。我唯一能挂断的是路由别名。也许我弄错了但是我的理解就像路线别名一样,它只是一个别名。因此原始路线也应该存在。它似乎并没有真正起作用。
我创建了一个用/商家捕获所有东西的路线,创建一个别名
Router::connect('/merchants/:action/*', array('controller' => 'users'));
它做了它应该做的事情。如果我去/商家/登录,它真的是/ users / login。如果我转到/ users / login,它会将我重定向到/ merchants / login。我确实在AppController中设置了Auth组件。如果我取出Auth,那么别名就可以了。所以我认为Auth是罪魁祸首。我想要有点过于聪明吗?有一个更好的方法吗?使用相同的控制器单独登录。
答案 0 :(得分:3)
这肯定是由于反向路由。在解析链接时,您配置的路径会使Cake使用/merchants/
而不是/users/
。
登录操作为by default /users/login
。因此,当Cake将用户重定向到登录网址时,/users/
也会被登录网址中的/merchants/
替换。
如果您想强制登录的特定URL不使用/merchants/
,您可以为此声明更具体的路由:
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
Router::connect('/merchants/:action/*', array('controller' => 'users'));
答案 1 :(得分:0)
听起来您的ACL或Auth设置中不允许/users/login
。当您访问/users/login
时Auth看到您没有访问权限,因此重定向到您Auth::$loginAction
(您没有发布但我认为/merchants/login
基于行为)。< / p>
确保将Auth::$loginAction
设置为用户控制器登录操作,而不是商家路由。这样,当检查访问时,Auth知道允许该操作,因为默认情况下允许登录操作。