Zend 2 ve Doctrine 2 ile kimlik doğrulama hakkında bir eğitim arıyorum. Özellikle denetleyicinin ve bağdaştırıcının oluşturulması.Zend 2 + doctrine 2 Auth Bağdaştırıcısı
Resmi belgeler çok genel olarak bana yeterince yardımcı olmuyor.
teşekkür ederimDÜZENLEME: i "Doktrini Varlığı" kullanmak
(ad Kullanıcı \ Varlık;)
Varlık module.config.php dosyasında kayıt olan:
'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'
)
)
),
)
Ancak şimdi, identityClass anahtarımı adaptörüme nasıl yönlendirebilirim? Denetleyici: Bu hata var
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);
????????????
}
}
: olmayan bir nesne içinde ... doktrin \ doktrin-modül \ src \ DoctrineModule \ Options \ AuthenticationAdapter.php üzerine üye işlev getRepository() çağır satır 132 satır 123: dönüş $ this-> objectManager-> getRepository ($ this-> identityClass);
Merhaba, ipuçları için çok teşekkürler. DoctrineModule \ Authentication \ Adapter \ ObjectRepository'u DoctrineAdapter olarak kullanmaya çalışıyorum. fakat $ result = $ adapter-> authenticate() işlevini çağırdığımda bu hatayı aldım: Nesne olmayan bir nesne üzerinde getRepository() işlevine çağrı yapın. IdentityClass'ımı nasıl ve nerede tanımlarım? – beweed
Kimlik sınıfınız bir Doktrin Belgesi (ODM için) veya Doktrin Varlığı (ORM için) olmalıdır. Herhangi bir belge/varlık olarak tanımlayın. (Belgenizi/varlığınızı, tüm diğer belgeleriniz/öğeleriniz için yapacağınız gibi, 'module.config.php' dosyanızdaki bir sürücü anahtarı ile kaydetmeyi unutmayın. Kimlik sınıfınızı oluşturduktan sonra, adaptörünüzü işaret etmek için 'identityClass' tuşunu kullanın. Yukarıdaki örnekte, kimlik sınıfı "Application \ Model \ User" dır, ancak istediğiniz her şeyi yapabilirsiniz. – superdweebie
Yardımlarınız için gerçekten minnettarım. Sorunumu yerleştirmek için yayınımı düzenliyorum. – beweed