2016-04-13 10 views
0

学校のクラスの1つはCakePHPクラスで、誰も答えられなかったという質問が1つあります。これは、ユーザーが特定のもの(管理ページなど)にアクセスできないようにする方法です。私がやったやり方は、特定のindex.ctpページのビューのPHP文を使用して、ロールが= 1の場合、このHTML以外にこの他のHTMLを表示するということでした。しかし、それは本当にすぐにはありません。Cakephp admin routingブッキング正規ユーザー

私はadminルーティングプレフィックスをセットアップし、ルーティングを考慮してMVCファイルを再ベイクドしましたが、「1」の役割でユーザーをブロックする方法はわかりません - デフォルトを意味する - adminプレフィックスページにアクセスすることから。たぶん私は何かを完全に失っている...任意の洞察やチュートリアルは、巨大な助けになるだろう。

のAppコントローラ

class AppController extends Controller { 
public $components = array('DebugKit.Toolbar', 'Session', 'Auth'); 

public function isAuthorized($user) { 
     if (empty($this->request->params['prefix'])) { 
      return true; 
     } 
     if($this->request->params['prefix'] == 'admin') { 
      return ($user['role'] == '2'); 
     } 
     return false; 
} 
public function beforeFilter() { 
    $this - > set('logged_in', $this - > Auth - > loggedIn()); 
    $this - > set('current_user', $this - > Auth - > user()); 
} 
} 

プロジェクトは https://github.com/DavidWGreeley/termmvc/tree/Testing

+2

あなたのコードに何が問題なのですか? – arilia

+0

通常のユーザーとしてログインするときは、/ admin/dvdsと入力するだけでadmin DVDsのインデックスビューにアクセスできます。通常のユーザーはできないはずです。それが私が止めようとしている部分です – DavidGreeley

答えて

1

にアップロードされ、あなたがケーキを通知する必要がAuthコンポーネントをロードすると、それは

を必要とする認証の種類のケーキを伝える必要がありますそれはController::isAuthorizedの方法を調べなければならないということです。したがって、あなたのAppController::initialize()メソッドでは:

$this->loadComponent('Auth', [ 
    'authorize' => [ 
     'Controller' 
    ] 
)