+  my $query = <<SQL;
+    SELECT sess_key, sess_value, auto_restore
+    FROM auth.session_content
+    WHERE (session_id = ?)
+      AND (   auto_restore
+           OR sess_key IN (${auto_restore_keys}))
+SQL
+  my $sth = prepare_execute_query($::form, $dbh, $query, $session_id);
+
+  while (my $ref = $sth->fetchrow_hashref) {
+    my $value = SL::Auth::SessionValue->new(auth         => $self,
+                                            key          => $ref->{sess_key},
+                                            value        => $ref->{sess_value},
+                                            auto_restore => $ref->{auto_restore},
+                                            raw          => 1);
+    $self->{SESSION}->{ $ref->{sess_key} } = $value;
+
+    next if defined $::form->{$ref->{sess_key}};
+
+    my $data                    = $value->get;
+    $::form->{$ref->{sess_key}} = $data if $value->{auto_restore} || !ref $data;
+  }