diff --git a/protected_node.module b/protected_node.module
index 5f4c7c5..ab3cc22 100644
--- a/protected_node.module
+++ b/protected_node.module
@@ -585,7 +585,7 @@ function protected_node_node_view($node, $view_mode = 'full') {
       // be searching so we let go without the access denied error.)
       protected_node_invoke('protected_node_hide', $node);
     }
-    elseif (!user_access('bypass password protection') && !user_access('view protected content')) {
+    elseif (!user_access('bypass password protection') && !user_access('view protected content') && _protected_node_check_view_mode($view_mode)) {
       if (!$user->uid && variable_get('cache', 1)) {
         // Prevent caching (do NOT use variable_set() since this is temporary
         // for this session).
@@ -1242,3 +1242,20 @@ function protected_node_unlock($nid) {
   }
   return FALSE;
 }
+
+/**
+ * Internal function to evaluate whether the current
+ * view mode is one to check the password for.
+ *
+ * @param $view_mode, eg: full, teaser, or custom (eg: ds view modes)
+ * @return boolean, TRUE if we are checking passwords, FALSE if not.
+ */
+function _protected_node_check_view_mode($view_mode) {
+  $permitted_view_modes = array('full', 'teaser');
+
+  if (module_exists('ds')) {
+    $permitted_view_modes = variable_get('protected_node_ds_view_modes', array('full', 'teaser'));
+  }
+
+  return in_array($permitted_view_modes, $view_mode);
+}
diff --git a/protected_node.settings.inc b/protected_node.settings.inc
index 8f8687a..c05909a 100644
--- a/protected_node.settings.inc
+++ b/protected_node.settings.inc
@@ -542,6 +542,28 @@ function protected_node_admin_settings() {
     );
   }
 
+  if (module_exists('ds')) {
+    $view_modes = array();
+    foreach (ds_entity_view_modes('node') as $id => $item) {
+      $view_modes[$id] = $item['label'];
+    }
+    asort($view_modes);
+
+    $form['protected_node_ds'] = array(
+      '#type' => 'fieldset',
+      '#collapsible' => TRUE,
+      '#title' => t('Display Suite view modes'),
+    );
+    $form['protected_node_ds']['protected_node_ds_view_modes'] = array(
+      '#type' => 'select',
+      '#multiple' => TRUE,
+      '#title' => t('Enabled view modes'),
+      '#description' => t('Only check passwords for nodes that are rendered with the selected view modes.'),
+      '#options' => $view_modes,
+      '#default_value' => variable_get('protected_node_ds_view_modes', array('full')),
+    );
+  }
+
   // A few actions to do some "mass work".
   $form['protected_node_actions'] = array(
     '#type' => 'fieldset',
