Я работаю над проектом CakePHP и в настоящее время создаю часть аутентификации пользователя. Проблема в том, что моя информация об аутентификации (т.е. пароли) не хранится в моей базе данных - источником аутентификации является LDAP, но мой вопрос в равной степени относится к любому источнику, не связанному с базой данных.
Похоже, что Cake обрабатывает пароли только тогда, когда они существуют в локальной базе данных. Поваренная книга Cake предлагает указать другой контроллер/модель/объект для предоставления процедуры авторизации с использованием переменной $this->Auth->authorize, но глядя на код (в частности, функция Auth::startup()) похоже, что 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.
Любые идеи о том, как это сделать, надеюсь, без взлома основных файлов?