Bootstrap.php:
Code: Select all
...
protected function _initSessionHelper()
{
Zend_Session::start();
$sess = new Zend_Session_Namespace('Default');
$auth = Zend_Auth::getInstance();
if($sess->user && !Zend_Auth::getInstance()->hasIdentity())
{
$authStorage = $auth->getStorage();
$authStorage->write($sess->user);
}
}
...
Code: Select all
...
public function signinAction()
{
if(Zend_Auth::getInstance()->hasIdentity()){
$this->_redirect('/');
}
$request = $this->getRequest();
$form = new Application_Form_Signin();
if($request->isPost()){
if($form->isValid($this->_request->getPost())) {
$username = $form->getValue('username');
$password = $form->getValue('password');
$authAdapter = new Application_Auth_Adapter($username,$password);
$auth = Zend_Auth::getInstance();
$result = $auth->authenticate($authAdapter);
if($result->isValid()){
$user = $this->_usersMapper->findByUsername($username,new Application_Model_Users());
$sess = new Zend_Session_Namespace('Default');
$sess->user = $user;
Zend_Session::rememberMe(604800); // Week
$authStorage = $auth->getStorage();
$authStorage->write($user);
$this->_redirect('/');
} else {
$this->view->errorMessage = "User name or password is wrong.";
}
}
}
$this->view->form = $form;
}
...
public function signoutAction()
{
Zend_Auth::getInstance()->clearIdentity();
Zend_Session::forgetMe();
Zend_Session::destroy(true);
$this->_redirect('/');
}
...
All i'm trying to do is keep the user logged in for a week and not get lost every time he navigates away from the page like normal Zend_Auth does.