2011-02-11 6 views
0

Итак, я работаю над приложением, которое до сих пор имеет горестное управление доступом, и требует правильного решения как можно скорее. Я добавил в компоненты CakePHP Auth и Acl в соответствии с учебником в Cookbook, и все это работает очень хорошо, поскольку, если я добавляю пользователя вручную, он создает запись в таблице aros соответствующим образом, SHA1-хеширует пароль надлежащим образом, все хорошие вещи.Добавление ACL в приложение CakePHP

Теперь для бит, который немного отличается от моего уровня мастерства. У нас есть 1000 имен в базе данных, которые должны стать Пользователями в новой системе. Я попытался сбросить их в таблицу Users с запросом MySQL, но есть две проблемы:

(1) Выполнение этого способа не создает записи в таблице aros. Я почти уверен, что смогу выстроить это для работы в определенное время, но есть ли какие-нибудь ярлыки, о которых я мог бы знать?

(2) Это то, что заставляет меня почесать голову. Когда я добавляю пользователя вручную, их пароль автоматически обрабатывается SHA1. Когда я вхожу на страницу пользователей/входа, вводимый пароль правильно сопоставляется с хэшированным паролем в db, и я получаю доступ. Однако, независимо от того, что я делаю с паролями, которые я удалял непосредственно в базу данных, я не могу получить страницу входа в систему, чтобы предоставить им доступ. Первоначально я хэшировал их с помощью функции MySQL SHA1; Я понимаю, что это не может быть хорошей идеей, потому что Торт посыпает лишней солью. Я попробовал хэшировать их через функцию Cake's Security :: hash. Я попытался позволить Cake сохранить каждый пароль в самой таблице Users, позволяя ему делать все, что захочет, за кадром, без вмешательства со мной.

В любом из этих случаев я не могу войти в систему, используя одну из этих комбинаций имени пользователя и пароля. Пароли выглядят хорошо и хэшируются, и они соответствуют паролям, которые я вводил после применения к ним Security :: hash. Что не хватает, что позволит мне это сделать?

+0

Имеются ли у вас уже имеющиеся пароли для пользователей (_из вашего старого приложения_)? – joeb

+0

@joeb, Нет, они ранее были разграблены (ужасно). Это голова. – thesunneversets

+0

Вы подтвердили, что между функциями CakePHP и MySQL SHA1 возникла проблема? Кажется, я вижу эту проблему. –

ответ

0

Если бы я был на вашем месте, я бы построил Shell, чтобы обработать это для вас, таким образом вы можете использовать все то, что сделал Cake, например, автоматически добавляя новую запись ARO и используя Security::hash для обработки хэширования до сохранения записи.

0

Для справки это не проблема с хешированием. Я не указывал usergroup_id в момент сохранения (планировал установить его позже!). Я думаю, вы не можете войти в систему с учетной записью, которая не входит в группу пользователей, даже если ваша комбинация имени пользователя и пароля верна.