diff --git a/background_batch/background_batch.module b/background_batch/background_batch.module
index 903b2ea..24c9ec2 100755
--- a/background_batch/background_batch.module
+++ b/background_batch/background_batch.module
@@ -80,6 +80,9 @@ function background_batch_batch_alter(&$batch) {
     }
     $batch['timestamp'] = microtime(TRUE);
   }
+  // In order to make this batch session independend we save the owner UID.
+  global $user;
+  $batch['uid'] = $user->uid;
 }
 
 /**
diff --git a/background_batch/background_batch.pages.inc b/background_batch/background_batch.pages.inc
index b39b97c..2023c32 100755
--- a/background_batch/background_batch.pages.inc
+++ b/background_batch/background_batch.pages.inc
@@ -75,10 +75,7 @@ function background_batch_page() {
   }
 
   // Retrieve the current state of batch from db.
-  $token = drupal_get_token($id);
-  $data = db_query("SELECT batch FROM {batch} WHERE bid = :bid AND token = :token",
-            array(':bid' => $id, ':token' => $token)
-          )->fetchColumn();
+  $data = db_query("SELECT batch FROM {batch} WHERE bid = :bid", array(':bid' => $id))->fetchColumn();
   if (!$data) {
     return drupal_not_found();
   }
@@ -86,6 +83,12 @@ function background_batch_page() {
   $batch =& batch_get();
   $batch = unserialize($data);
 
+  // Check if the current user owns (has access to) this batch.
+  global $user;
+  if ($batch['uid'] != $user->uid) {
+    return drupal_access_denied();
+  }
+
   $op = isset($_REQUEST['op']) ? $_REQUEST['op'] : '';
   switch ($op) {
     case 'start':
