diff --git a/entityreference.module b/entityreference.module
index bdcb562..a77b13b 100644
--- a/entityreference.module
+++ b/entityreference.module
@@ -1080,12 +1080,16 @@ function entityreference_field_formatter_info() {
       'field types' => array('entityreference'),
       'settings' => array(
         'link' => FALSE,
+        'skip_access' => FALSE,
       ),
     ),
     'entityreference_entity_id' => array(
       'label' => t('Entity id'),
       'description' => t('Display the id of the referenced entities.'),
       'field types' => array('entityreference'),
+      'settings' => array(
+        'skip_access' => FALSE,
+      ),
     ),
     'entityreference_entity_view' => array(
       'label' => t('Rendered entity'),
@@ -1094,6 +1098,7 @@ function entityreference_field_formatter_info() {
       'settings' => array(
         'view_mode' => 'default',
         'links' => TRUE,
+        'skip_access' => FALSE,
       ),
     ),
   );
@@ -1138,6 +1143,12 @@ function entityreference_field_formatter_settings_form($field, $instance, $view_
     );
   }
 
+  $element['skip_access'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Skip access check for referenced entity'),
+    '#default_value' => $settings['skip_access'],
+  );
+
   return $element;
 }
 
@@ -1164,6 +1175,8 @@ function entityreference_field_formatter_settings_summary($field, $instance, $vi
     $summary[] = !empty($settings['links']) ? t('Display links') : t('Do not display links');
   }
 
+  $summary[] = !empty($settings['skip_access']) ? t('Skip access check for referenced entity') : t('Do not skip access checks for referenced entity');
+
   return implode('<br />', $summary);
 }
 
@@ -1225,9 +1238,11 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
   $settings = $display['settings'];
 
   // Rebuild the items list to contain only those with access.
-  foreach ($items as $key => $item) {
-    if (empty($item['access'])) {
-      unset($items[$key]);
+  if (empty($settings['skip_access'])) {
+    foreach ($items as $key => $item) {
+      if (empty($item['access'])) {
+        unset($items[$key]);
+      }
     }
   }
 
@@ -1236,10 +1251,10 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
       $handler = entityreference_get_selection_handler($field, $instance, $entity_type, $entity);
 
       foreach ($items as $delta => $item) {
-        $label = $handler->getLabel($item['entity']);
+        $label = $settings['skip_access'] ? entity_label($handler->field['settings']['target_type'], $item['entity']) : $handler->getLabel($item['entity']);
         // If the link is to be displayed and the entity has a uri, display a link.
         // Note the assignment ($url = ) here is intended to be an assignment.
-        if ($display['settings']['link'] && ($uri = entity_uri($field['settings']['target_type'], $item['entity']))) {
+        if ($display['settings']['link'] && $item['access'] && ($uri = entity_uri($field['settings']['target_type'], $item['entity']))) {
           $result[$delta] = array('#markup' => l($label, $uri['path'], $uri['options']));
         }
         else {
@@ -1267,7 +1282,7 @@ function entityreference_field_formatter_view($entity_type, $entity, $field, $in
         unset($entity->content);
         $result[$delta] = entity_view($field['settings']['target_type'], array($item['target_id'] => $entity), $settings['view_mode'], $langcode, FALSE);
 
-        if (empty($settings['links']) && isset($result[$delta][$field['settings']['target_type']][$item['target_id']]['links'])) {
+        if ((empty($settings['links']) || !$item['access']) && isset($result[$delta][$field['settings']['target_type']][$item['target_id']]['links'])) {
           $result[$delta][$field['settings']['target_type']][$item['target_id']]['links']['#access'] = FALSE;
         }
         $depth = 0;
