[BUGFIX] rsaauth PHP backend calls key generation on every request
authorDaniel Po╠łtzinger <poetzinger@aoemedia.de>
Mon, 9 Apr 2012 19:45:20 +0000 (21:45 +0200)
committerHelmut Hummel <helmut.hummel@typo3.org>
Sat, 14 Apr 2012 18:17:25 +0000 (20:17 +0200)
Problem: openssl_pkey_new is not a simple cheap operation and
for minimal requests (e.g. ajax), this can consume up to 10% of the request time.

Solution: Do not process the login fields if no login is triggered.

This commit will save even more processing power as the whole service chain
for processing the login fields is not instantiated anymore.

Change-Id: I34eae9978a8cb0ff2b985a23a358dc88f55ab171
Fixes: #33165
Releases: 6.0, 4.7, 4.6
Reviewed-on: http://review.typo3.org/10200
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Philipp Gampe
Reviewed-by: Helmut Hummel
Tested-by: Helmut Hummel
t3lib/class.t3lib_userauth.php

index 3802b74..d4130a0 100644 (file)
@@ -1173,7 +1173,10 @@ abstract class t3lib_userAuth {
                        $loginData['uident'] = t3lib_div::_POST($this->formfield_uident);
                        $loginData['chalvalue'] = t3lib_div::_POST($this->formfield_chalvalue);
                }
-               $loginData = $this->processLoginData($loginData);
+                       // Only process the login data if a login is requested
+               if ($loginData['status'] === 'login') {
+                       $loginData = $this->processLoginData($loginData);
+               }
 
                return $loginData;
        }
@@ -1182,9 +1185,9 @@ abstract class t3lib_userAuth {
         * Processes Login data submitted by a form or params depending on the
         * passwordTransmissionStrategy
         *
-        * @param       array           login data array
-        * @param       string          Alternative passwordTransmissionStrategy. Used when authentication services wants to override the default.
-        * @return      array           processed login data array
+        * @param array $loginData login data array
+        * @param string $passwordTransmissionStrategy Alternative passwordTransmissionStrategy. Used when authentication services wants to override the default.
+        * @return array
         * @internal
         */
        function processLoginData($loginData, $passwordTransmissionStrategy = '') {