Что изменилось для $this-›auth-›authorize (cakephp 1.3) в CakePHP 2.2.1 (стабильная версия)?

Я обновляю приложение с CakePHP 1.3 до CakePHP 2.2.1.

Мы внедряем ACL и в AppController я увидел

if (isset($this->Auth)) {
            if ($this->use_acl) {
                $this->Auth->authorize = 'actions';
            }

В качестве объявления переменной я уже внес изменения в следующее:

var $components = array(
        'Auth' => array(
            'authenticate' => array(
                'Form' => array(
                'fields' => array('username' => 'email', 'password' => 'password')
                )
            ),
            'loginAction' => array(
                'admin' => false, 'prefix' => false, 'controller' => 'users', 
                'action' => 'login')
        ),
        'Session', 'Facebook.Connect');

это все еще требует, чтобы я сохранил:

$this->Auth->loginAction = array('admin' => false, 'prefix' => false, 'controller' => 'users', 'action' => 'login');

Работа с кодом может показаться уродливой, но таковы обновления! ;)

Кроме того, могу ли я использовать $this->Auth-> 'свойства аутентификации' в 2.2.1, как это было возможно в 1.3?


person Karma    schedule 23.08.2012    source источник


Ответы (1)


Как обычно, лучше всего начинать работу с такими вопросами, как руководство. Затем опубликуйте результаты своих тестов, а не свой код и общий вопрос.

Тем не менее, первый опубликованный вами блок кода выглядит как пользовательская переменная на вашем конце $this->use_acl. Я никогда не видел, чтобы это использовалось в CakePHP, поэтому в вашем приложении есть какой-то флажок, чтобы использовать «действия».

Второй блок кода выглядит довольно стандартно. Он должен работать. Да, вам все еще нужно указать действие входа, чтобы при попытке пользователя перейти на защищенную страницу он был перенаправлен на логин. Тем не менее, есть различия в процессе входа в систему, как указано в ссылке выше. Вы должны взглянуть на различия в том, когда пароль хешируется, и на саму функцию login(), поскольку они обе изменились. Тот факт, что вы используете ACL, не должен иметь большого значения с точки зрения различий в аутентификации между двумя версиями.

Ваш последний вопрос Also, can I use the $this->Auth-> 'auth properties' in 2.2.1 as it was possible in 1.3 ?, ответ - да. Вы должны взглянуть на файл AuthComponent.php в папке lib/Cake. Это сильно прокомментировано об информации, о которой вы спрашиваете здесь. Есть даже примеры.

person Scott Harwell    schedule 23.08.2012
comment
Ну, этот код сделан не мной. Дается мне для обновления. Когда я запускаю код, он возвращает ошибку 500, которую я устраню после рефакторинга кодовой базы, во время рефакторинга я наткнулся на это. Я проверил руководство и мысленно нахожусь между 1.3 и 2.x (вы правильно понимаете?). Я подписан на book.cakephp.org/2.0/en /appendices/2-0-migration-guide.html и ссылку на руководство, которую вы уже дали. Да, use_acl меня тоже беспокоил. В общем, ничего особо не изменилось? - person Karma; 23.08.2012
comment
Не так много изменилось в том, как вы настраиваете компонент Auth. Однако способ обработки аутентификации полностью изменился. В руководстве есть флаги, описывающие, чем они отличаются. А именно, вам нужно хэшировать ваши пароли перед сохранением, и метод login() изменился. Таким образом, вам обязательно нужно будет изменить свое приложение, чтобы учесть это. Но, учитывая, что у нас нет доступа к тому, как компонент Auth используется в вашем приложении, невозможно сказать, что вы можете решить свои проблемы, изменив несколько строк кода. - person Scott Harwell; 23.08.2012
comment
Спасибо @Скотт. В данный момент я столкнусь с множеством проблем. Но, Auth должен быть тщательно сделан. - person Karma; 23.08.2012
comment
@KarmicDice Чем для вас обернулось это обновление? Я также обновляюсь с 1.3 до 2.x (2.2.4) и получаю ошибку 500. - person palmi; 17.12.2012
comment
Быть простым. Что я сделал, так это... создал базовый CakePHP 2x в системе, а затем выбрал контроллеры, представления, модели... по одному блоку за раз... Переход занял у меня около 3 недель, но теперь все хорошо :) - person Karma; 18.12.2012