我面临着用OrangeHRM构建Symfony 1.2.4的自动注销问题
我试过什么?
php.ini和.htaccess将最大的时间分配给会话。/symfony/lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php的代码后尝试
公共函数初始化(sfEventDispatcher $dispatcher,sfStorage $storage,$options =sfStorage()){ //初始化父函数::初始化($dispatcher,$storage,$options);if (!array_key_exists(‘超时值’,$this->选项){$this->选项‘超时值’= 86400;//$此->选项‘超时值’= 1800;}$此->选项‘超时值’= 86400;//$此->选项‘timeout’=2* 24 * 60 * 60;//强制会话垃圾回收器的最大生存期大于超时值/*if (ini_get('session.gc_maxlifetime') <$this->options‘超时值’){ini_set(‘session.gc_ max生存期’,$this->选项‘超时值’);}*/ ini_set(‘session.gc_max生存期’,$this->选项‘timeout’);//读取存储中的数据$this->= $ storage -> read (self::AUTH_NAMESPACE);$this->凭据=$存储->read(self::CREDENTIAL_NAMESPACE);$this->lastRequest =$ === ->read(===);if (null ===$this->凭据=false){$this->凭据= false;$this->凭据=数组();}{ //自动登录用户,如果在超时参数秒内没有请求,$timeout =$this->选项‘超时值’;如果(false !== $timeout && null !== $this->lastRequest & time() - $this->lastRequest >= $timeout) { if ($this->options‘’logging‘){$this->dispatcher->==(新的sfEvent($this,'application.log’),数组(‘由于超时而导致的自动用户注销’);} $this->setTimedOut();$this->setTimedOut(False);} $this->lastRequest = time();
}$_SESSION['symfony/user/sfUser/lastRequest']。AJAX发送get请求来保持活动状态。YML的.../symfony/apps/orangehrm/config/factories.yml设置文件中增加会话时间
全部:路由:类: sfPatternRouting param: generate_shortest_url: true extra_parameters_as_query_string: true extra_parameters_as_query_string: class: sfSessionStorage param: session_name: PHPSESSID session_cache_limiter: nocache用户: class: myUser param:超时值: 86000日志记录:%SF_LOGGING_ENABLED%使用_flash:真default_culture:%SF_DEFAULT_CULTURE%最终结果
所有这些技术都失败了。
发布于 2016-05-11 16:44:22
首先,您不应该触摸供应商目录中的文件!
在symfony应用程序中修改会话生存期的正确方法是通过config.yml文件。See this question for reference。
发布于 2016-05-22 14:27:28
尽管这有点晚,但这将帮助您扩展会话超时值。此设置位于.../symfony/apps/orangehrm/config/factories.yml文件中。
在这里你会看到下面的设置,
all:
routing:
class: ohrmPatternRouting
param:
generate_shortest_url: true
extra_parameters_as_query_string: true
storage:
class: sfSessionStorage
param:
session_name: PHPSESSID
session_cookie_secure: true
session_cache_limiter: nocache
user:
class: myUser
param:
timeout: 1800 #change this value to change the session timeout interval
logging: %SF_LOGGING_ENABLED%
use_flash: true
default_culture: %SF_DEFAULT_CULTURE%应该更改的相关值是timeout参数。默认值为1800秒(30分钟)。如果您在开发环境中,请执行symfony命令(在终端中,进入symfony文件夹并执行./symfony cc)以使其工作。希望这能有所帮助!
https://stackoverflow.com/questions/37168250
复制相似问题