Szukam samouczka na temat uwierzytelniania z Zend 2 i Doctrine 2. W szczególności tworzenie kontrolera i adaptera.Zend 2 + doctrine 2 Auth Adapter
Oficjalna dokumentacja jest zbyt ogólnikowa, nie pomaga mi to w wystarczającym stopniu.
dziękuję
EDIT:
używam "doktryny podmiotem" (nazw użytkownika \ Entity;)
jednostka jest zarejestrować w pliku module.config.php:
'doctrine' => array(
'driver' => array(
__NAMESPACE__ . '_driver' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'cache' => 'array',
'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
),
'orm_default' => array(
'drivers' => array(
__NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
)
)
),
)
Ale jak mogę wskazać mój klucz identityClass na mój adapter? Kontroler:
use Zend\Mvc\Controller\AbstractActionController,
Zend\View\Model\ViewModel,
Zend\Authentication\AuthenticationService,
Doctrine\ORM\EntityManager,
DoctrineModule\Authentication\Adapter\ObjectRepository as DoctrineAdapter,
User\Entity\User,
User\Form\UserForm;
class UserController extends AbstractActionController
{
protected $em;
public function setEntityManager(EntityManager $em)
{
$this->em = $em;
}
public function getEntityManager()
{
if (null === $this->em)
$this->em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
return $this->em;
}
public function getRepository()
{
if (null === $this->em)
$this->em = $this->getEntityManager()->getRepository('User\Entity\User');
return $this->em;
}
public function loginAction()
{
....
????????????
$adapter = new DoctrineAdapter();
$adapter->setIdentityValue($username);
$adapter->setCredentialValue($password);
$auth = new AuthenticationService();
$result=$auth->authenticate($adapter);
????????????
}
}
mam ten błąd: Zadzwoń do getRepository funkcji członka() na non-object w ... doktryny \ doktryna modułu \ src \ DoctrineModule \ Options \ AuthenticationAdapter.php na wiersz 132 wiersz 123: return $ this-> objectManager-> getRepository ($ this-> identityClass);
Witam, bardzo dziękuję za porady. Próbuję użyć DoctrineModule \ Authentication \ Adapter \ ObjectRepository jako DoctrineAdapter. , ale gdy zadzwonię do $ result = $ adapter-> authenticate() mam ten błąd: wywołanie funkcji member getRepository() na obiekcie nie będącym obiektem. Jak i gdzie mogę zdefiniować moje identityClass? – beweed
Twoja klasa tożsamości powinna być dokumentem Doctrine (dla ODM) lub Doctrine Entity (dla ORM). Zdefiniuj go tak jak każdy dokument/encję. (Nie zapomnij zarejestrować dokumentu/podmiot za pomocą klucza sterownika w pliku 'module.config.php', jak to zrobisz dla wszystkich twoich innych dokumentów/podmiotów). Po utworzeniu klasy tożsamości użyj klucza 'identityClass', aby wskazać na nim adapter. W powyższym przykładzie klasą tożsamości jest 'Application \ Model \ User', ale możesz zrobić to, co chcesz. – superdweebie
Naprawdę doceniam twoją pomoc. Właśnie edytuję swój post, aby zlokalizować mój problem. – beweed