Zend_Auth: kullanıcı adı ve şifre ek olarak rol kontrol nasıl?

2 Cevap php

Benim veritabanında benim 'users' tabloda tüm farklı düzeylerde (üyeler, moderatörler, yöneticileri, vb) kullanıcıları içermesini istiyor. Yani benim 'users' tablodaki bir sütun rolüdür. Ben özel uygulama bölümlerine giriş izni olup olmadığını görmek için rolünü kontrol edebilmek istiyorum. Bunu nasıl yapabilirim? İşte şimdiye kadar benim auth adaptörü:

protected function _getAuthAdapter($formData)
{
    $dbAdapter = Zend_Db_Table::getDefaultAdapter();
    $authAdapter  = new Zend_Auth_Adapter_DbTable($dbAdapter);

    $authAdapter->setTableName('users');
    $authAdapter->setIdentityColumn('username');
    $authAdapter->setCredentialColumn('password');

    $authAdapter->setIdentity($formData['username']);
    $authAdapter->setCredential(md5($formData['password']));

    return $authAdapter;
}

2 Cevap

Henüz bu Zend_Acl için kullanmak isteyen değilseniz, bu deneyin:

protected function getAuthAdapter()
{
    if (null === $this->_auth)
    {
        $a = new Zend_Auth_Adapter_DbTable(
            Zend_Registry::get('db')
        );

        $a->setTableName('users')
          ->setIdentityColumn('email')
          ->setCredentialColumn('password');

        // Get the select object and
        // modify to check against whatever you want
        $s = $a->getDbSelect();
        $s->where('userType = ?', 'admin'); // Or whatever, you can see what I'm doing

        $this->_auth = $a;
    }

    return $this->_auth;
}

Eğer Zend_Auth kullanarak gerçek Zend_Db_Select nesneyi almak ve gerektiğinde bunu değiştirmek için getDbSelect () kullanabilirsiniz görebilirsiniz.

Bunu amacı olmayan bir amaç için Zend_Auth kullanmaya çalışıyor olabilir.

Zend_Auth bir kullanıcı o belli bir şey yapmak için izniniz olup olmadığını değil, diyor kim olup olmadığını söylemek gerekiyordu.

Sen Zend_ACL arıyoruz: http://zendframework.com/manual/en/zend.acl.html