CakePHP Acl öğretici yapıyor.

1 Cevap php

Ben doğru öğretici yaptık yemin edebilirdim, ama ben bir hata mesajı alıyorum ve benim aros_acos masa boş.

What I've already done:

  1. On this page: http://book.cakephp.org/view/646/Creating-ACOs I've run "cake acl create aco root controllers" and it returned "New Aco 'controllers' created.". I've also added "$this->Auth->actionPath = 'controllers/';" to the beforeFilter() of AppsController. I do not understand the other piece of code since it is badly explained where it should go -- what exactly does it mean by "using the AclComponent"?

  2. I've run the build_acl() from this page: http://book.cakephp.org/view/647/An-Automated-tool-for-creating-ACOs It has populated my 'acos' table with 46 entries.

  3. http://book.cakephp.org/view/648/Setting-up-permissions Ben apps_controller.php içine sayfasında bulunan kopyaladığınız kodu ve ben kullanıyorum grupların kimlikleri işaret etmek için hafifçe ermesi: Bu benim sorunlar yatıyor inanıyoruz sayfası:

    function initDB() { $group =& $this->User->Group;

    //Allow admins to everything
    $group->id = 5;
    $this->Acl->allow($group, 'controllers');
    
    
    //allow managers to posts and widgets
    $group->id = 6;
    $this->Acl->deny($group, 'controllers');
    $this->Acl->allow($group, 'controllers/Posts');
    $this->Acl->allow($group, 'controllers/Widgets');
    
    
    //allow users to only add and edit on posts and widgets
    $group->id = 7;
    $this->Acl->deny($group, 'controllers');
    $this->Acl->allow($group, 'controllers/Posts/add');
    $this->Acl->allow($group, 'controllers/Posts/edit');
    $this->Acl->allow($group, 'controllers/Widgets/add');
    $this->Acl->allow($group, 'controllers/Widgets/edit');
    

    }

Ben de kullanıcı ve gruplar denetleyicileri gelen allowedActions tüm başvuruları alınan ve benim mesajlar, widget'lar ve AppController sayfalara doğru kodu ekledim ...

Ziyaret ederek AppController içindeki initdb () çalıştırırken http://localhost/basic_cake2/groups/initDB Ben ekranın üstünde bir uyarı mesajı olsun. Diyor ki:

DbAcl::allow() - Invalid node [CORE/cake/libs/controller/components/acl.php, line 325]

BAĞLAM:

$aro = stdClass stdClass::$id = 5 $aco = "controllers" $actions = "*" $value = 1 $perms = false $permKeys = array( "_create" "_read" "_update" "_delete" ) $save = array()

KOD:

    if ($perms == false) {
        trigger_error(__('DbAcl::allow() -

Geçersiz düğüm ', true), E_USER_WARNING);

VE AYRICA GÖSTERİLERİ:

DbAcl::allow() - CORE/cake/libs/controller/components/acl.php, line 325 AclComponent::allow() - CORE/cake/libs/controller/components/acl.php, line 101 AppController::initDB() - APP/app_controller.php, line 23 Object::dispatchMethod() - CORE/cake/libs/object.php, line 116 Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 227 Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 194 [main] - APP/webroot/index.php, line 88

On checking the aros_acos table I find that nothing has been added!

Therefore the authentication doesn't work on any pages... :( Does anybody have any ideas? I've no idea how to debug this and I asked on #cakephp but they were quite silent in response and basically just told me to re-read the documentation.

EDIT: Okay, so I read the tutorial a little harder and it turns out I've been running the function from the wrong file. I moved it to the Users Controller and it added 3 rows to the aros_acos table.

Ben hala bir şeyler yanlış gidiyor düşünüyorum böylece Ancak, ben hala o hata mesajı alıyorum!

Hata mesajı için bağlam ilginç olan, değişmiş gibi görünüyor. Şimdi okur:

$ Aro = Grup

Grup :: $ name = "Grup"

Grup :: $ validate = array

Grup :: $ hasMany = array

Grup :: $ actsAs = array

Grup :: $ useDbConfig = "default"

Grup :: $ useTable = "grupları"

Grup :: $ displayField = "isim"

Grup :: $ id = 6

Grup :: $ data = array

Grup :: $ tablo = "groups"

Grup :: $ primaryKey = "id"

Grup :: $ _schema = array

Grup :: $ validationErrors = array

Grup :: $ tablePrefix = ""

Grup :: $ ad = "Grup"

Grup :: $ tableToModel = array

Grup :: $ logTransactions = false

Grup :: $ işlem = false

Grup :: $ cacheQueries = false

Grup :: $ belongsTo = array

Grup :: $ hasOne = array

Grup :: $ hasAndBelongsToMany = array

Grup :: $ Davranışlar = BehaviorCollection nesne

Grup :: $ whitelist = array

Grup :: $ cacheSources = true

Grup :: $ findQueryType = null

Grup :: $ özyinelemeli = 1

Grup :: $ order = null

Grup :: $ __exists = null

Grup :: $ __associationKeys = array

Grup :: $ __associations = array

Grup :: $ __backAssociation = array

Grup :: $ __insertID = null

Grup :: $ __numRows = null

Grup :: $ __affectedRows = null

Grup :: $ _findMethods = array

Grup :: $ _log = null

Grup :: $ user = Kullanıcı nesnesi

Grup :: $ Aro = Aro nesne

$ Aco = "kontrolörleri / Mesajlar"

$ Eylemler = "*"

$ Değer = 1

$ Perms = false

$ PermKeys = array (

"_create"

"_read"

"_update"

"_delete"

)

$ Tasarruf = array ()

1 Cevap

Ben düzelttim. Gelecekte başvurmak için:

  1. Ben sıfırdan başlamak için tüm tabloları içeriğini silinir.
  2. Ben yanlış dosyasından initdb () yürütüyor ediyorum. Ben doğru Kullanıcılar Denetleyicisi taşındı. Artık çalışan bir hata mesajı verdi ve aros_acos için doğru girdileri eklendi.

Sabit!