2

サイトにログインした後、問題が発生しました。ユーザーには「admin」、「employer」の 2 種類があります。雇用主でログインすると、管理者の制限エリアにアクセスできます。以下は、サイトの AppController です。

class AppController extends Controller {
        public $helpers = array('Form', 'Html', 'Js', 'Time', 'Auth');

        // Change template extension to .php instead of .ctp
        var $ext = '.php';
        public $components = array(
            'Session',
            'Auth' => array(
                'loginAction' => array(
                    'controller' => 'users',
                    'action' => 'login'
                ),
                'loginRedirect' => array('controller' => 'users', 'action' => 'index'),
                'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
                'authenticate' => array('Form' => array('fields' => array('username' => 'email'))),
                'authorize' => array('Controller')
            )
        );

        public function isAuthorized($user) {

            // Admin can access every action
            if (isset($user['type']) && $user['type'] === 'admin') {
                return true;
            }

            // Default deny
            return false;
        }

        public function beforeFilter() {
            $this->Auth->allow(array('view', 'index','assessment','question'));
        } 
    }

これが管理者用のメソッドを持つコントローラーです。

class TopicsController extends AppController {

    public $scaffold = 'admin';
    public function beforeFilter() {

        if($this->Auth->user('type')!='employer'){
           parent::beforeFilter();
           $this->Auth->allow(array('view', 'index','moveup'));
        } else {
           $this->Auth->deny(array('view', 'index','moveup'));
           $this->redirect(array('controller' => 'employer' , 'action' => 'index'));
        }

    }
    public function isAuthorized($user) {
        return true;
    }

    public function index() {
      $this->set('topics', $this->Topic->children());
    }

}

管理 URL がwww.example.com/admin/topicsの場合、雇用主は正しい URL ではないwww.example.com/admin/employerにリダイレクトされます。

public $scaffold = 'admin';また、私には少し不明なので知りたいです。私を助けてください..

4

1 に答える 1

3

わかりました..リダイレクトする方法が1つ見つかりました。これにより、私の問題は今のところ解決されました..誰かが持っている場合は、まだ適切な答えを探しています..

からコードを変更しました

$this->redirect(array('controller' => 'employer' , 'action' => 'index'));

$this->redirect('employer');

.. 編集:ありがとうアレックス、私は使用しました

$this->redirect(array('controller' => 'employer' , 'action' => 'index', 'admin'=>false));

そしてそれも働いています..

于 2013-07-11T12:21:30.437 に答える