Index: lib/ezutils/classes/ezsession.php
===================================================================
--- lib/ezutils/classes/ezsession.php	(revision 25229)
+++ lib/ezutils/classes/ezsession.php	(working copy)
@@ -270,6 +270,7 @@
         $db = eZDB::instance();
         $ini = eZINI::instance();
         $expirationTime = time() + $ini->variable( 'Session', 'SessionTimeout' );
+        $userExpirationTimes = $ini->variable( 'Session', 'UserSessionTimeout' );
 
         if ( $db->bindingType() != eZDBInterface::BINDING_NO )
         {
@@ -289,6 +290,11 @@
             $userHash = $db->escapeString( self::getUserSessionHash() );
         }
 
+        if ( array_key_exists( $userID, $userExpirationTimes ) )
+        {
+            $expirationTime = time() + (int) $userExpirationTimes[$userID];
+        }
+
         // check if session already exists
         $sessionRes = $isCurrentUserSession && !self::$hasSessionCookie ? false : $db->arrayQuery( "SELECT session_key FROM ezsession WHERE session_key='$escKey'" );
 
Index: settings/site.ini
===================================================================
--- settings/site.ini	(revision 25229)
+++ settings/site.ini	(working copy)
@@ -122,6 +122,10 @@
 
 # Number of seconds a session will last, 3 days is standard
 SessionTimeout=259200
+# Number of seconds a session will last, for specific users. Normally the anonymous user has ID 10.
+# Example: Expire session of user ID 10 after 1 day
+# UserSessionTimeout[10]=86400
+UserSessionTimeout[]
 # Number of seconds before a session is considered inactive/logged out, 1 hour is standard
 ActivityTimeout=3600
 # Number of seconds a session cookie will last,
