Я пытаюсь запрограммировать LdapAuthentication, и мне нужна помощь.
Сначала мне нужно настроить «$ components» в / app / Controller / Component / 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/ru/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 не использует мою функцию авторизации.
Что я делаю неправильно? Пожалуйста помоги.
Вот рабочий класс 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/
** ТАКЖЕ **
Ваша конфигурация Auth неверна – ключ авторизации принимает строку или массив – логическое значение true не собирается ничего делать.
Если вы хотите, чтобы он проверял действие isAuthorized в контроллере, установите его так:
<?php ... public $components = array( 'Auth' => array( ... 'authorize' => array( 'Controller' ), ... )); ?>
Здесь вы передаете логический параметр и не имеете функции isAuthorized в своем AppController. Кроме того, вы используете старый синтаксис php4 для объявления своих переменных-членов (используйте public, protected или private вместо «var»)