2014-02-20 2 views
0

Я совершенно не знаком с ACLЧто следует использовать в качестве объекта управления доступом в CakePHP?

Веб-сайт посвящен автомобилям, в которых у дилера может быть несколько марок и в нескольких странах. Например: Дилер: John Doe имеет марки Audi в Великобритании и Kia во Франции.

У меня есть следующие модели: - Марка - Страна - Dealer - BrandsCountriesDealers (которая связывает выше три вместе)

дилер не может добавлять/редактировать бренд или страна. Он может только добавлять/редактировать/удалять автомобиль в стране, к которой он имеет доступ, и к бренду, которому он владеет.

Мне было интересно, использую ли я конкретный внешний ключ модели BrandsCountriesDealers в качестве ACO, и когда дилер добавит автомобиль, я проверю, действительно ли этот автомобиль и страна автомобиля действительны, проверив запись в модели BrandsCountriesDealers, которую он имеет доступ к?

Надеюсь, это было ясно.

+0

Я обычно использую [Крошка] (http://ww.dereuromark.de/2011/12/18/tinyauth-the-fastest-and-easiest-authorization-for-cake2/), чтобы установить основной доступ к роли и использование контроллера для конкретных проверок на основе записей (UID == $ record [user_id] и т. д.). – mark

ответ

0

Внедрение ACL немного сложно, но не невозможно. После того, как вы получите возможность работать с ACL, вы можете решить, насколько это просто и мощно. Это может потребоваться некоторое исследование, чтобы настроить и изучить его, но оно действительно нарушено.

Я думаю, вы должны использовать ACL по определенным причинам:

  1. Это делает ваш код очень чистый и аккуратный:

Вам не нужно держать назначить

if user logged in do this 

    or if user type is this do that 
  1. Acces s Уровень: нет необходимости писать валидацию для каждого типа пользователей.
  2. High Security: ACL работает с компонентом Auth
  3. каждый метод может быть предоставлен один или более типов пользователей (ролей)
  4. Почти каждая вещь хранится в БД, так что ваш код еще раз ясно

Помню, когда я начал работать с ACL, я последовал за this tutorial. Это на португальском языке. Я не знаю этого языка, но я шаг за шагом следил за его работой.

http://www.youtube.com/watch?v=EIjfwqqGRhs