내 응용 프로그램에서 ZfcUser를 사용하고 있으며 시간 초과 매개 변수를 제어해야합니다. 구성의 일부가 아니기 때문에 부트 스트랩에서 ZfcUser에 내 자신의 Zend/Session 개체 (remember_me_seconds
매개 변수 사용)를 설정하고 싶습니다. 그러나 어떻게해야할지 모르겠습니다.Zend/Session with ZfcUser
우연히 이미이 작업을 수행 한 사람이 있습니까?
내 응용 프로그램에서 ZfcUser를 사용하고 있으며 시간 초과 매개 변수를 제어해야합니다. 구성의 일부가 아니기 때문에 부트 스트랩에서 ZfcUser에 내 자신의 Zend/Session 개체 (remember_me_seconds
매개 변수 사용)를 설정하고 싶습니다. 그러나 어떻게해야할지 모르겠습니다.Zend/Session with ZfcUser
우연히 이미이 작업을 수행 한 사람이 있습니까?
나는 zfcuser를 사용하지만이
자동로드 여기/global.php
<?php
use Zend\Session\Config\SessionConfig;
use Zend\Session\SessionManager;
use Zend\Session\Container;
return array(
'service_manager' => array(
'factories' => array(
'SessionManager' => function($sm) {
$sessionConfig = new SessionConfig();
$sessionConfig->setOption('remember_me_seconds', 1440);
$sessionManager = new SessionManager($sessionConfig);
Container::setDefaultManager($sessionManager);
return $sessionManager;
},
),
),
);
Module.php
public function onBootstrap($event)
{
$serviceManager = $event->getApplication()->getServiceManager();
$serviceManager->get('SessionManager')->start();
}
내가 그것을 어떻게입니다하지 않습니다. 나는 세계 최고의 코더가 아니지만 이것이 효과가있는 것으로 보인다. 이 Module.php
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$sharedManager = $eventManager->getSharedManager();
$sm = $e->getApplication()->getServiceManager();
//This checks to see if the user is logged in.
$eventManager->attach(MvcEvent::EVENT_DISPATCH, array($this, 'checkLogin'), 100);
}
//This function is attached to a listener to see if the user is not currently logged in
//If they are not logged in they will be redirected to the login page. This check will happen through the
//application so there is no need to keep checking in other modules
public function checkLogin (MvcEvent $e)
{
$session = new Container('defaults');
$this->route = $e->getRouteMatch();
$this->matchedRouteName = explode('/', $this->route->getMatchedRouteName());
$this->route_root = $this->matchedRouteName[0];
$sm = $e->getApplication()->getServiceManager();
$zfcServiceEvents = $sm->get('ZfcUser\Authentication\Adapter\AdapterChain')->getEventManager();
$zfcServiceEvents->attach(
'authenticate',
function ($e) use ($session) {
$session->offsetSet('sessionstart', $_SERVER['REQUEST_TIME']);
}
);
$auth = $sm->get('zfcuser_auth_service');
if (!$auth->hasIdentity() && $this->route_root != 'zfcuser')
{
$response = new \Zend\Http\PhpEnvironment\Response();
$response->getHeaders()->addHeaderLine('Location', '/user/login');
$response->setStatusCode(302);
$response->sendHeaders();
$e->stopPropagation(true);
return $response;
}
else if ($auth->hasIdentity() && $session->offsetGet('sessionstart') < ($_SERVER['REQUEST_TIME'] - 10800) && $this->route_root != 'zfcuser')
{
$response = new \Zend\Http\PhpEnvironment\Response();
$response->getHeaders()->addHeaderLine('Location', '/user/logout');
$response->setStatusCode(302);
$response->sendHeaders();
$e->stopPropagation(true);
return $response;
}
else if ($auth->hasIdentity())
{
$session->offsetSet('sessionstart', $_SERVER['REQUEST_TIME']);
}
}
의 모든 세션 PARAMS을 설정하는 가장 쉬운 방법입니다 config\autoload\global.php
return array(
'service_manager' => [
'factories' => [
// Configures the default SessionManager instance
'Zend\Session\ManagerInterface' => 'Zend\Session\Service\SessionManagerFactory',
// Provides session configuration to SessionManagerFactory
'Zend\Session\Config\ConfigInterface' => 'Zend\Session\Service\SessionConfigFactory',
],
],
'session_manager' => [
// SessionManager config: validators, etc
],
'session_config' => [
'cache_expire' => 86400,
'cookie_lifetime' => 86400,
'remember_me_seconds' => 86400,
'gc_probability' => 10,
'gc_divisor' => 1000,
'use_cookies' => true,
'cookie_httponly' => true,
'cookie_lifetime' => 0, // to reset lifetime to maximum at every click
'gc_maxlifetime' => 86400,
],
);
을 다음과 Module.php
public function onBootstrap(MvcEvent $e)
{
$manager = $e->getApplication()->getServiceManager()->get('Zend\Session\ManagerInterface');
}
이 마음대로 onBootstrap
방법에 줄을 추가로이다 세션 설정에 영향을 주며 phpinfo()
에 표시됩니다.
찾았습니다. zfcuser github
나는 이보다 더 복잡 할까 두렵습니다. 세션은 어떤 식 으로든 ZfcUser에 연결되어야합니다 ... –
시도해 보셨습니까? – user291196