3

admin一部の管理ビューでは、Cakephp アプリでプレフィックスを使用しています。roleまた、User テーブルのフィールドに基づいて、これらのビューへのアクセスを制限するために Auth を使用しています。かなり標準的。

問題は、許可されていないユーザーがたとえば にアクセスしようとするとadmin/users(この場合、インデックス操作は禁止されています)、/admin/users/loginもちろん存在しない場所にリダイレクトされることです。

これは、admin プレフィックスを持たないアクションでは発生しません。それらは問題なく動作します。

admin プレフィックスと禁止されたアクションが先頭に追加されたログインにユーザーが送信されるのはなぜですか?

4

2 に答える 2

7

これでまだ問題が発生している人は誰でも、ドキュメントによると、loginAction(ドキュメント)で配列または文字列を使用できます。

配列を使用して'admin'=> falseを設定しても問題が発生するため、代わりに文字列を使用してみました。

public $components = array(
    'Auth' => array(
        'loginRedirect'  => array('controller' => 'dashboards', 'action' => 'home'),
        'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
        'loginAction'    => '/users/login',
        'authorize'      => array('Actions')
    ),
);

これで私の問題は解決しました。うまくいけば、それはあなたにもうまくいくでしょう。

于 2013-02-22T18:27:54.783 に答える
1

ルーティング配列で特定のプレフィックスをオーバーライドする必要があります。

$this->Auth->loginAction = array(
   'controller' => 'users', 
   'action' => 'login', 
   'admin' => false
);

または、複数のプレフィックスを使用している場合は、次のようにプレフィックス名を動的に削除できます。

$this->Auth->loginAction = array(
   'controller' => 'users', 
   'action' => 'login', 
   $this->request->prefix => false
);
于 2013-11-04T05:29:57.333 に答える