Witam
Problem polega na tym, że logując się w jednym serwisie automatycznie loguje mnie w drugim (na tym samym serwerze) - chodzi o namespace dla sesji, domyślnie jest Zend_Auth.
UPDATEMiałem małe 'niedociągnięcie', także już opisuję solucję dla następnych pokoleń

Ponieważ w bootstrapie przekazywałem do plugina (Zend_Acl, celem sprawdzenia jaką ma user ustawioną rolę w db i pobrania zezwoleń z Acl) instancję klasy Zend_Auth, tam powinienem ustawić przestrzeń nazw, a tego nie zrobiłem. Czyli:
<?php
$auth = Zend_Auth::getInstance();
$auth->setStorage(new Zend_Auth_Storage_Session('someNamespace'));
?>
I dalej już będzie działało jak powinno.
Przepraszam, za kłopot

Logowanie wygląda następująco:
<?php
public function indexAction() {
$auth = Zend_Auth::getInstance();
//$auth->setStorage(new Zend_Auth_Storage_Session('someNamespace')); - tej linijki nie trzeba tutaj.
if($auth->hasIdentity()) {
$this->_redirect('/');
}
$form = new Form_Login($this->akcja);
if($this->_request->isPost()) {
if($form->isValid($this->_request->getPost())) {
$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
$authAdapter->setTableName('accounts')
->setIdentityColumn('login')
->setCredentialColumn('password')
->setCredentialTreatment('SHA1(?)')
->setIdentity($this->_request->getPost('login'))
->setCredential($this->_request->getPost('password'));
$result = $auth->authenticate($authAdapter);
if($result->isValid()) {
$userInfo = $authAdapter->getResultRowObject(null, 'password');
$mLogin = new Model_Login;
$userInfo->role_id = $mLogin->pobierzRole($userInfo->id);
$authStorage = $auth->getStorage();
$authStorage->write($userInfo);
$this->_redirect('/admin');
}
$this->view->error = 'Logowanie nie powiodło się, spróbuj ponownie.';
}
}
$this->view->form = $form;
}
?>
Pozdrawiam,
MP
Ten post edytował Master Pain 31.07.2009, 08:50:52