LdapAuth в cakephp 2.0 - PullRequest
       8

LdapAuth в cakephp 2.0

2 голосов
/ 28 марта 2012

Я пытаюсь запрограммировать аутентификацию Ldap, и мне нужна помощь.

Сначала мне нужно настроить «компоненты» в / app / Controller / Компонент / AppController.php

<?php
  class AppController extends Controller {
  var $components = array('Auth' => array(
                            'Ldap',
                            'authError' => 'Not allowed here',                         
                           'authenticate' => array('Form' => array(
                                              'fields' => array(
                                                   'username'    => 'username',
                                                   'password' => 'password',
                                                    'domain' => 'domain'
                                     )
                                )
                            ),
                            'authorize' => true,
                          ), 'Session');
                  }
                      ?>

Затем я создаю LdapAuthorize.php, как http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#creating-custom-authorize-objects

              <?php
              App::uses('BaseAuthorize', 'Controller/Component/Auth');

            class LdapAuthorize extends BaseAuthorize {
            public function authorize($user, CakeRequest $request) {
            echo "test";
                }
                 }

              ?>

Но когда я пытаюсь войти с

          if ($this->Auth->login()) {
           return $this->redirect($this->Auth->redirect());
          } else {
               $this->Session->setFlash(__('Username or password is incorrect'),
            'default', array(), 'auth');
              }

cakephp не использует мою функцию авторизации.

Что я делаю не так? Пожалуйста, помогите.

1 Ответ

3 голосов
/ 02 апреля 2012

Вот рабочий класс Ldap Auth для 2.0.x

https://github.com/analogrithems/idbroker/tree/dev_cake2.0

с сообщением в блоге здесь:

http://www.analogrithems.com/rant/2012/01/03/cakephp-2-0-ldapauth/

** ТАКЖЕ **

Ваша конфигурация аутентификации неверна - ключ авторизации принимает строку или массив - логическое значение true ничего не сделает.

Если вы хотите проверить действие isAuthorized в контроллере - установите его так:

<?php
    ...
    public $components = array( 'Auth' => array(
        ...
        'authorize' => array( 'Controller' ),
        ...
    ));
?>

Вы передаете здесь логический параметр, и в вашем AppController нет функции isAuthorized. Кроме того, вы используете старый синтаксис php4 для объявления переменных-членов (используйте public, protected или private вместо «var»)

...