2011-01-11 9 views
3

私は、ユーザーがウェブの指定された部分だけにアクセスできるグループベースの制限を設けたいと考えています。私はACLのものを初めて知っているので、マニュアルからそれを手に入れることはできませんでした。したがって、いくつかの質問をしたいと思います。cakephpグループベースのアクセス許可

しかし、ご質問の前に、私のルートは次のようになります。

Router::connect('/', array('controller' => 'users', 'action' => 'login')); 
Router::connect('/admin/:controller/:action/*', array('prefix' => 'admin', 'admin' => true)); 
Router::connect('/registered/:controller/:action/*', array('prefix' => 'registered', 'registered' => true)); 

1)どのように私は、Web

2のONLY /registered/一部にアクセスするためにAdministratorよりも、他のグループからユーザーを制限します)www.example.com/users/addなどのデフォルトアドレスをグローバル規模で使用することを防ぐにはどうすればよいですか(www.example.com/admin/users/addまたはwww.example.com/registered/users/addのアドレスタイプのみ)この種のアドレスはroutes.phpに設定されたイベントではありませんが、それでも動作します。

ありがとうございました

答えて

1

これは正常な解決策です。 (/app/app_controller.php

function beforeFilter() {    
     if ((isset($this->params['admin']))) { 
      $admin_grp = $this->UserGroup->find('first', array(
       'conditions' => array(
        'UserGroup.name' => 'Administrator'))); 
      if ($this->Auth->user('user_group_id') != $admin_grp['UserGroup']['id']) { 
       $this->Session->setFlash(__('Access denied.', true)); 
       $this->redirect("/registered"); 
      } else { 
       $this->layout = 'admin'; 
      } 
     } else if (isset($this->params['registered'])) { 
      if (!$this->Auth->user()) { 
       $this->Session->setFlash(__('Access denied. You need to login first.', true)); 
       $this->redirect("https://stackoverflow.com/users/login"); 
      } 
      $this->layout = 'registered'; 
     } else { 
      $this->layout = 'default'; 
     } 
} 
3

まずはこのケーキ1.3または1.2ですか? 1.3ではプレフィックスルーティングが使用されています。複数のプレフィックスを設定することができます。例えば、管理者/コントローラ/アクションを通じて管理者の制御が必要なサイトを開発しています。また、登録ユーザーのみにいくつかの領域を制限しています。

これは最初のステップは、あなたのcore.phpの中にセットアッププレフィックスにあり、やることは比較的容易である:

Configure::write('Routing.prefixes', array('admin', 'registered')); 

それがここに文書化されている: http://book.cakephp.org/view/950/Prefix-Routing

Authコンポーネントは、ここでは他のすべての世話をすることができますあなたはACLなどを使用することができますが、私は現時点で作成しているものに対しては複雑すぎるように見えるので、これまではあまり検討していません。

チュートリアル私は、これを行う方法を学習していたとき、私は参考になったAndrew Perkins認証コンポーネントチュートリアルをYouTubeで利用していました。 youtube.com/watch?v=FjXAnizmR94

3つの部分があり、よく説明しています。

運が良かった!

+0

SRYは、言及を忘れてしまった私は、ケーキ1.3 – Elwhis

+1

を使用していますチュートリアルやドキュメントを参照してください。あなたがまだ立ち往生しているなら、私が助けることができると確信しています:-) –

関連する問題