Форум → Программирование → PHP для идиотов → Помогите с аутентификацией
Помогите с аутентификацией
Страницы: ← Следующая страница →
-
Хочу сделать по-максимуму гибко. Выделил 4 интерфейса. Вот что получилось - https://gist.github.com/778803cec98a82cde77b . Смотреть сначала интерфейсы а потом примеры классов.
1) Чую, что где-то проебал. Что бы вы делали иначе?
2) Над этим всем нужно сделать фасад. Вообще застрял.
Мне кажется, что в репозиторий (EntityProviderInterface) можно лезть только используя CredentialsStorageInterface::getCredentials(). Что думаете по этому поводу? Или может быть этот момент должен Фасад разруливать?
Особенно интересно мнение товарищей Kostyl, Krasun, NRG. Хыхы, забавно, все они - украинцы. -
11 марта 2011 г. 0:04, спустя 30 минут 23 секунды
аутентификация по-украински блеать!все умрут, а я изумруд -
11 марта 2011 г. 0:15, спустя 10 минут 49 секунд
Какой например фасад должен по твоему разруливать?
И мне кажется надо чёто упросить… хотя бы на одну сущьность меньше… -
11 марта 2011 г. 0:34, спустя 19 минут 33 секунды
фигассе, вот это я навертел, если даже ты говоришь, что интерфейсов больше чем нужно :D.
Я не знаю, что упростить. 4 сущности, если провести параллель с реальным миром, то:
1) человек
2) картотека, где записаны люди
3) сторож, который грубо говоря проверяет сетчатку глаза и выдает временный пропуск, что б каждый раз не проверять сетчатка
4) пропуск/сетчатка глаза, который человек предъявляет сторожу
А фасад нужен что б упростить взаимодействие с этими 4 сущностями. Наверняка нужно будет еще какой-нить чайнинг еще впихнуть (вход через контакт, который является оберткой над стандартным входом и тд). -
11 марта 2011 г. 1:15, спустя 40 минут 20 секунд
Очень сильно, хочу спать, бегло просмотрел…
Не понял, зачем тебе CredentialsStorageInterface. Тем более у тебя в примере, вообще прикол:
class CredentialsStorage_Form_Example implements CredentialsStorageInterface
{
public function getCredentials()
{
return array('login' => $_POST['login'], 'pass' => $_POST['pass']);
}
public function ereaseCredentials(AccountInterface $entity)
{
}
public function updateCredentials(AccountInterface $entity, array $credentials)
{
}
}
Вот здесь:
// … code …
public function checkIdentify(AccountInterface $entity, CredentialsStorageInterface $credentialsStorage)
{
$identify = $entity->getIdentify();
$credentials = $credentialsStorage->getCredentials();
return $credentials['pass'] == $identify['pass'];
}
// … code …
Я бы добавил какие-то параметры, что-то типа:
// … code …
public function checkIdentify(AccountInterface $entity, CredentialsStorageInterface $credentialsStorage, array $params)
{
$identify = $entity->getIdentify();
$credentials = $credentialsStorage->getCredentials();
return $credentials[$params['credentialKey']] == $identify[$params['credentialKey']];
}
// … code …
И я так и не понял, откуда появиться $credentialsStorage, где ты его создашь и каким образом.
Так и не понял:
interface AuditorInterface
{
function checkIdentify(AccountInterface $entity, CredentialsStorageInterface $credentialsStorage);
function identify(AccountInterface $entity, CredentialsStorageInterface $credentialsStorage);
function updateIdentify(AccountInterface $entity, CredentialsStorageInterface $credentialsStorage);
function removeIdentify(AccountInterface $entity, CredentialsStorageInterface $credentialsStorage);
}
Зачем тебе здесь checkIdentify и identify одновременно? Мне кажется, что можно обойтись без одного из них, вообще два этим метода меня сразу путают.
Я бы зделал в identify просто, что типа $entity->isAuthentificated(), вместо checkIdentify().
-
-
11 марта 2011 г. 2:12, спустя 8 минут 30 секунд
Абырвалг, если Украинец, то это не значит, что можно писать имена функций по англицки как слЫшЫтся)) (erase), подумай о будующих прогах))))) -
-
13 марта 2011 г. 0:05, спустя 1 день 21 час 21 минуту
Я бы добавил какие-то параметры, что-то типа:
такие параметры будут задаваться, да, но через отдельные сеттерыСпустя 36 сек.+это упрощенный вариант, для простоты понимания.Спустя 121 сек.Не понял, зачем тебе CredentialsStorageInterface. Тем более у тебя в примере, вообще прикол:
какой прикол? CredentialsStorageInterface - сторейдж. Хранилище данных, по которым можно опознать пользователя, сравнить то, что в картотеке с тем, что у пользователя на руках. Это кошелек, в котором лежит пропуск. -
13 марта 2011 г. 0:10, спустя 5 минут 26 секунд
Зачем тебе здесь checkIdentify и identify одновременно?
согласен, удалил -
13 марта 2011 г. 0:11, спустя 59 секунд
суббота вечер..
программисты..You can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
-
-
13 марта 2011 г. 0:39, спустя 6 минут 46 секунд
аа! Так они там собственно говоря не очень-то и нужны. Это ж форма входа. Там нет никаких отпавок кук и тд. Можно так сделатьpublic function updateIdentify(AccountInterface $account, CredentialsStorageInterface $credentialsStorage)
{
if (!$this->checkIdentify($account, $credentialsStorage)) {
throw new Exception('Not valid user');
}
$credentialsStorage->updateCredentials($account, array());
}
public function removeIdentify(AccountInterface $account, CredentialsStorageInterface $credentialsStorage)
{
$account->setAuthenticated(false);
$credentialsStorage->eraseCredentials($account);
}Спустя 27 сек.ну или $_POST['login'] = $_POST['pass'] = null;Спустя 30 сек.в общем спорный момент, это не главная проблема там -
13 марта 2011 г. 1:19, спустя 40 минут
во расписали хуйни то :D::D
вместо обычного
$us = db->find("users", array("name" => $_POST['user'], "pass" => md5($_POST['pass'])));
if(!$us) throw new ..
:D:DСапожник без сапог
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!