1

I'm pretty new to CakePHP but not new in any sense to programming. Usually I can figure things out pretty quickly. However I think I need a little help with this one. Looking over the CakePHP Cookbook it explains routes pretty clear. The only thing I'm getting hung up on is route aliases. Maybe I'm getting it wrong but my understanding a far as route aliases go is that it's just that, an alias. Therefore the original route should exist as well. It doesn't seem to really work that way.

I created a route for capturing everything with /merchants, creating an alias

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

It does what it supposed to do. If I go to /merchants/login, it's really /users/login. If I go to /users/login, it redirects me to /merchants/login. I do have the Auth component set up in the AppController. If I take Auth out then the alias works as it should. So I'm thinking that Auth is the culprit. Am I trying to be a bit too clever? Is there a better way to do this? Separate logins with the same controller.

4

2 に答える 2

3

これは確かに逆ルーティングによるものです。構成したルートにより、リンクが解析されるときの/merchants/代わりにCake が使用します。/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/loginACLまたは認証の設定で許可されていないようです。/users/loginAuthにアクセスすると、アクセス権がないことがわかるので、リダイレクトします(Auth::$loginAction投稿していませんが/merchants/login、動作に基づいていると思います)。

Auth::$loginActionマーチャントルートではなく、ユーザーコントローラーのログインアクションに設定されていることを確認します。そうすれば、アクセスをチェックするときに、ログインアクションがデフォルトで許可されているため、Authはアクションが許可されていることを認識します。

于 2012-12-20T15:24:11.077 に答える