Я работаю над проектом CakePHP и в настоящее время создаю часть аутентификации пользователя. Проблема в том, что мои данные аутентификации (то есть: пароли) не хранятся в моей базе данных - источником аутентификации является LDAP, но мой вопрос применим в равной степени к любому источнику без базы данных.Альтернативные источники аутентификации в CakePHP (LDAP)
Похоже, что Cake обрабатывает пароли только в том случае, если они существуют в локальной базе данных. The Cake Cookbook suggests, что вы можете указать ему другой контроллер/модель/объект для предоставления процедуры авторизации с использованием переменной $this->Auth->authorize
, однако, глядя на код (в частности, the Auth::startup()
function), похоже, что Cake будет всегда пытаться запросить базу данных сначала, проверяя совпадающее имя пользователя/пароль, прежде чем смотреть на альтернативный объект, указанный вами с помощью Auth->authorize
. То есть, изменение authorize
только добавляет фильтр второго уровня, он не заменяет поиск базы данных.
// The process
1. User provides details
2. Cake checks the database
3. If OK, then check the custom object method
4. If OK, return true
// What I'd like:
1. User provides details.
2. Check the custom object method
3. If OK, return true
4. Profit.
Любые идеи о том, как это сделать, надеюсь, без взлома файлов ядра?
+1 для прибыли ... – Stephen