[FEATURE] Possibility to set sessionTimeout for Frontend Users 54/50654/11
authorAlexander Opitz <opitz.alexander@googlemail.com>
Mon, 14 Nov 2016 15:54:50 +0000 (16:54 +0100)
committerBenni Mack <benni@typo3.org>
Wed, 29 Nov 2017 18:24:50 +0000 (19:24 +0100)
Currently it was only possible to set the session timeout for the backend users
You can define the sessionTimeout with the new configuration option
$GLOBALS['TYPO3_CONF_VARS']['FE']['sessionTimeout'].

Resolves: #78695
Releases: master
Change-Id: I628ccc4448230af6dd2bf1533777375ef7e5624d
Reviewed-on: https://review.typo3.org/50654
Reviewed-by: Markus Klein <markus.klein@typo3.org>
Tested-by: Markus Klein <markus.klein@typo3.org>
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
typo3/sysext/core/Configuration/DefaultConfiguration.php
typo3/sysext/core/Configuration/DefaultConfigurationDescription.yaml
typo3/sysext/core/Documentation/Changelog/master/Feature-78695-SetTheSessionTimeoutForFrontendUsers.rst [new file with mode: 0644]
typo3/sysext/frontend/Classes/Authentication/FrontendUserAuthentication.php

index f9a23d2..2e28f1b 100644 (file)
@@ -1018,6 +1018,7 @@ return [
         'lockIP' => 2,
         'loginSecurityLevel' => '',
         'lifetime' => 0,
         'lockIP' => 2,
         'loginSecurityLevel' => '',
         'lifetime' => 0,
+        'sessionTimeout' => 6000,
         'sessionDataLifetime' => 86400,
         'permalogin' => 0,
         'cookieDomain' => '',
         'sessionDataLifetime' => 86400,
         'permalogin' => 0,
         'cookieDomain' => '',
index 55f7fc6..37b7174 100644 (file)
@@ -255,7 +255,7 @@ BE:
             description: 'Session IP locking for backend users. See <a href="#FE-lockIP">[FE][lockIP]</a> for details.'
         sessionTimeout:
             type: int
             description: 'Session IP locking for backend users. See <a href="#FE-lockIP">[FE][lockIP]</a> for details.'
         sessionTimeout:
             type: int
-            description: 'Seconds. Session time out for backend users. The value must be at least 180 to avoid side effects. Default is 3600 seconds = 1 hour.'
+            description: 'Session time out for backend users in seconds. The value must be at least 180 to avoid side effects. Default is 28.800 seconds = 8 hours.'
         IPmaskList:
             type: list
             description: 'Lets you define a list of IP-numbers (with *-wildcards) that are the ONLY ones allowed access to ANY backend activity. On error an error header is sent and the script exits. Works like IP masking for users configurable through TSconfig. See syntax for that (or look up syntax for the function <code>\TYPO3\CMS\Core\Utility\GeneralUtility::cmpIP())</code>'
         IPmaskList:
             type: list
             description: 'Lets you define a list of IP-numbers (with *-wildcards) that are the ONLY ones allowed access to ANY backend activity. On error an error header is sent and the script exits. Works like IP masking for users configurable through TSconfig. See syntax for that (or look up syntax for the function <code>\TYPO3\CMS\Core\Utility\GeneralUtility::cmpIP())</code>'
@@ -389,6 +389,9 @@ FE:
         lifetime:
             type: int
             description: 'If >0 and the option permalogin is >=0, the cookie of FE users will have a lifetime of the number of seconds this value indicates. Otherwise it will be a session cookie (deleted when browser is shut down). Setting this value to 604800 will result in automatic login of FE users during a whole week, 86400 will keep the FE users logged in for a day.'
         lifetime:
             type: int
             description: 'If >0 and the option permalogin is >=0, the cookie of FE users will have a lifetime of the number of seconds this value indicates. Otherwise it will be a session cookie (deleted when browser is shut down). Setting this value to 604800 will result in automatic login of FE users during a whole week, 86400 will keep the FE users logged in for a day.'
+        sessionTimeout:
+            type: int
+            description: 'Server side session timeout for frontend users in seconds. Will be overwritten by the lifetime property if the lifetime is longer.'
         sessionDataLifetime:
             type: int
             description: 'If >0, the session data of an anonymous session will timeout and be removed after the number of seconds given (86400 seconds represents 24 hours).'
         sessionDataLifetime:
             type: int
             description: 'If >0, the session data of an anonymous session will timeout and be removed after the number of seconds given (86400 seconds represents 24 hours).'
diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-78695-SetTheSessionTimeoutForFrontendUsers.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-78695-SetTheSessionTimeoutForFrontendUsers.rst
new file mode 100644 (file)
index 0000000..1acb87a
--- /dev/null
@@ -0,0 +1,19 @@
+.. include:: ../../Includes.txt
+
+============================================================
+Feature: #78695 - Set the session timeout for frontend users
+============================================================
+
+See :issue:`78695`
+
+Description
+===========
+
+Previously it was possible to set the lifetime of a frontend user session via cookie,
+which validated the session on the client-side, for the server-side there was only an option
+for backend user sessions.
+
+Setting the option :php:`$GLOBALS['TYPO3_CONF_VARS']['FE']['sessionTimeout']` is now possible
+(via the Install Tool) to configure a global timeout for frontend sessions on the server-side.
+
+.. index:: Frontend, LocalConfiguration, NotScanned
\ No newline at end of file
index 37c24d7..08e9caf 100644 (file)
@@ -138,6 +138,7 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
         $this->lockIP = $GLOBALS['TYPO3_CONF_VARS']['FE']['lockIP'];
         $this->checkPid = $GLOBALS['TYPO3_CONF_VARS']['FE']['checkFeUserPid'];
         $this->lifetime = (int)$GLOBALS['TYPO3_CONF_VARS']['FE']['lifetime'];
         $this->lockIP = $GLOBALS['TYPO3_CONF_VARS']['FE']['lockIP'];
         $this->checkPid = $GLOBALS['TYPO3_CONF_VARS']['FE']['checkFeUserPid'];
         $this->lifetime = (int)$GLOBALS['TYPO3_CONF_VARS']['FE']['lifetime'];
+        $this->sessionTimeout = (int)$GLOBALS['TYPO3_CONF_VARS']['FE']['sessionTimeout'];
     }
 
     /**
     }
 
     /**
@@ -161,7 +162,7 @@ class FrontendUserAuthentication extends AbstractUserAuthentication
      */
     public function start()
     {
      */
     public function start()
     {
-        if ((int)$this->sessionTimeout > 0 && $this->sessionTimeout < $this->lifetime) {
+        if ($this->sessionTimeout > 0 && $this->sessionTimeout < $this->lifetime) {
             // If server session timeout is non-zero but less than client session timeout: Copy this value instead.
             $this->sessionTimeout = $this->lifetime;
         }
             // If server session timeout is non-zero but less than client session timeout: Copy this value instead.
             $this->sessionTimeout = $this->lifetime;
         }