Авторизация в Zend FW - PullRequest
       6

Авторизация в Zend FW

0 голосов
/ 09 апреля 2011

Я хочу сделать авторизацию в своем приложении на основе ZF.В Kohana я мог бы сделать что-то вроде

public $auth;
public $user;
public function before()
{
    parent::before();

    $this->auth = Auth::instance();
    $this->user = $this->auth->get_user();
    // $this->user is object if user was logged in or FALSE if not
}

в моем абстрактном контроллере.

Как сделать то же самое в Zend?Я читал о плагинах и думаю, что это то, что мне нужно, но не нашел никакой информации о том, где сохранять файлы классов плагинов и где мне их включать?

Ответы [ 2 ]

2 голосов
/ 09 апреля 2011

Вы также можете сделать что-то похожее в ZF на то, что вы делали в Kohana.Лично я никогда не использовал Kohana, но мне кажется, что ZF-версия вашего примера будет похожа на это:

// assuming IndexController
class IndexController extends Zend_Controller_Action {

    protected $_auth;
    protected $_user;

    // you could also use init() here.
    public function preDispatch() {
        $this->_auth = Zend_Auth::getInstance();
        $this->_user = $this->_auth->getIdentity(); 
    }
}

Если вы хотите иметь его в абстрактном контроллере, то вы можете просто создать егонапример, My_Controller_Action), который расширяет Zend_Controller_Action.Имея это, IndexController будет просто расширять ваш абстрактный контроллер, а не Zend_Controller_Action.

0 голосов
/ 09 апреля 2011

Эй!Это тоже очень просто.Но если вы хотите получить разрешение или обработать новое?Что бы ни случилось, сюда приходят оба.Сначала обрабатывается авторизация с использованием учетных данных в таблице базы данных:

$db   = $this->getInvokeArg('bootstrap')->db;
$auth = Zend_Auth::getInstance();

$authAdapter = new Zend_Auth_Adapter_DbTable($db);
$authAdapter->setTableName('authLogin')
    ->setIdentityColumn('username')
    ->setCredentialColumn('password')
    ->setIdentity($username)
    ->setCredential($password);

$result = $auth->authenticate($authAdapter);

if ($result->isValid()) {
    // Yeah, logged in. Do some stuff here...
}

И вот идет проверка, если пользователь в данный момент вошел в систему:

$auth = Zend_Auth::getInstance();

if ($auth->hasIdentity()) {
    // User is logged in. Retrieve its identity
    $username = $auth->getIdentity();
}

Надеюсь, это поможет ...

...