public function configure($object, array $options = [])
 {
     $manager = new Session\SessionManager();
     $manager->setStorage(new Session\Storage\ArrayStorage());
     $manager->setSaveHandler(new Session\SaveHandler\Cache(new CacheStorageAdapterMemory()));
     $manager->setConfig(new Session\Config\StandardConfig());
     $session = new Session\Container('Default', $manager);
     $object->getServiceLocator()->set('Zend\\Session\\Container', $session);
 }
Пример #2
0
 public function loginAction()
 {
     $request = $this->getRequest();
     $smarty = $this->getServiceLocator()->get('Smarty');
     if ($request->isGet()) {
         $smarty->assign('error', null);
         $smarty->display('admin/login.tpl');
     } else {
         $success = true;
         $error = null;
         $name = $request->getPost('name');
         $password = $request->getPost('password');
         $success = false;
         if (!$name || !$password) {
             $error = '用户名和密码不能为空';
         } else {
             $tableGateway = $this->getServiceLocator()->get('UserTable');
             $users = $tableGateway->findByName($name);
             if ($users->count() != 1) {
                 $error = '用户名或密码不正确';
             } else {
                 $password_additional = $this->getServiceLocator()->get('config')['password_additional'];
                 $realPassword = md5($password . $password_additional);
                 if ($users->current()->getPassword() === $realPassword) {
                     $session = new SessionManager();
                     $user = $users->current();
                     $storage = new ArrayStorage(['user' => $user]);
                     if ($session->setStorage($storage)) {
                         $success = true;
                     } else {
                         $error = '写入session失败';
                     }
                 } else {
                     $error = '密码不正确';
                 }
             }
         }
         if ($success) {
             $this->redirect()->toUrl('/admin');
         } else {
             $smarty->assign('error', $error);
             $smarty->display('admin/login.tpl');
         }
     }
 }
Пример #3
0
<?php

define('REDBEAN_MODEL_PREFIX', '../Model_');
require __DIR__ . '/../vendor/autoload.php';
require 'rb.php';
/*
require '../vendor/autoload.php';
$fvm = \RedBeanFVM\RedBeanFVM::getInstance();
gabordemooij\redbean\RedBeanPHP
*/
R::setup('mysql:host=localhost;dbname=smemailmf', 'root', '');
use Zend\Session\Config\StandardConfig;
use Zend\Session\SessionManager;
$config = new StandardConfig();
$config->setOptions(array('remember_me_seconds' => 1800000, 'name' => 'mailmf'));
$manager = new SessionManager($config);
//var_dump($manager);
use Zend\Session\Storage\ArrayStorage;
$populateStorage = array('foo' => 'bar');
$storage = new ArrayStorage($populateStorage);
$manager = new SessionManager();
$manager->setStorage($storage);
//var_dump($manager);
/*
$book = R::dispense("mail");
$book->author = "Santa Claus";
$book->title = "Secrets of Christmas";
$id = R::store( $book );
*/
 /**
  * Retorna o adaptador de sessao
  * @param string $name
  * @return SessionContainer
  */
 public function getSessionAdapter($name = 'Default')
 {
     if (!isset($_SESSION[$name])) {
         $sessionConfig = new SessionConfig();
         $sessionConfig->setOptions($this->globalConfig['session']);
         $sessionStorage = new \Zend\Session\Storage\SessionArrayStorage();
         $sessionManager = new SessionManager();
         $sessionManager->rememberMe($this->globalConfig['session']['remember_me_seconds']);
         $sessionManager->forgetMe();
         $sessionManager->setConfig($sessionConfig);
         $sessionManager->setStorage($sessionStorage);
         $sessionNamespace = new SessionContainer($name, $sessionManager);
         $sessionNamespace->setExpirationSeconds(3600);
         if (!isset($sessionNamespace->init)) {
             $request = new \Zend\Http\PhpEnvironment\Request();
             $sessionNamespace->init = 1;
             $sessionNamespace->remoteAddr = $request->getServer('REMOTE_ADDR');
             $sessionNamespace->httpUserAgent = $request->getServer('HTTP_USER_AGENT');
             /*
              $chain = $sessionManager->getValidatorChain();
              $validatorUserAgent = new \Zend\Session\Validator\HttpUserAgent($sessionNamespace->httpUserAgent);
              $chain->attach('session.validate', array($validatorUserAgent, 'isValid'));
              $validatorAddr = new \Zend\Session\Validator\RemoteAddr($sessionNamespace->remoteAddr);
              $chain->attach('session.validate', array($validatorAddr, 'isValid'));
             
              $sessionManager->setValidatorChain($chain);
             * 
             */
         }
         $sessionNamespace->setDefaultManager($sessionManager);
     } else {
         $sessionNamespace = new SessionContainer($name);
         $sessionNamespace->setExpirationSeconds(3600);
     }
     $this->sessionAdapter = $sessionNamespace;
     return $sessionNamespace;
 }