diff --git a/src/Plugin/Block/LoginBlock.php b/src/Plugin/Block/LoginBlock.php
index da6909d..6217ae8 100644
--- a/src/Plugin/Block/LoginBlock.php
+++ b/src/Plugin/Block/LoginBlock.php
@@ -2,11 +2,15 @@
 
 namespace Drupal\openid_connect\Plugin\Block;
 
+use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Block\BlockBase;
 use Drupal\Core\Form\FormBuilder;
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
+use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\openid_connect\Plugin\OpenIDConnectClientManager;
+use Drupal\Core\Routing\RouteMatchInterface;
+
 
 /**
  * Provides a 'OpenID Connect login' block.
@@ -33,6 +37,14 @@ class LoginBlock extends BlockBase implements ContainerFactoryPluginInterface {
   protected $formBuilder;
 
   /**
+   * The route match.
+   *
+   * @var \Drupal\Core\Routing\RouteMatchInterface
+   */
+  protected $routeMatch;
+
+
+  /**
    * Construct.
    *
    * @param array $configuration
@@ -41,6 +53,8 @@ class LoginBlock extends BlockBase implements ContainerFactoryPluginInterface {
    *   The plugin_id for the plugin instance.
    * @param string $plugin_definition
    *   The plugin implementation definition.
+   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
+   *   The route match.
    * @param \Drupal\openid_connect\Plugin\OpenIDConnectClientManager $plugin_manager
    *   The OpenID Connect client manager.
    * @param \Drupal\Core\Form\FormBuilder $form_builder
@@ -50,6 +64,7 @@ class LoginBlock extends BlockBase implements ContainerFactoryPluginInterface {
       array $configuration,
       $plugin_id,
       $plugin_definition,
+      RouteMatchInterface $route_match,
       OpenIDConnectClientManager $plugin_manager,
       FormBuilder $form_builder
   ) {
@@ -57,6 +72,8 @@ class LoginBlock extends BlockBase implements ContainerFactoryPluginInterface {
 
     $this->pluginManager = $plugin_manager;
     $this->formBuilder = $form_builder;
+    $this->routeMatch = $route_match;
+
   }
 
   /**
@@ -67,6 +84,7 @@ class LoginBlock extends BlockBase implements ContainerFactoryPluginInterface {
       $configuration,
       $plugin_id,
       $plugin_definition,
+      $container->get('current_route_match'),
       $container->get('plugin.manager.openid_connect_client.processor'),
       $container->get('form_builder')
     );
@@ -75,6 +93,18 @@ class LoginBlock extends BlockBase implements ContainerFactoryPluginInterface {
   /**
    * {@inheritdoc}
    */
+  protected function blockAccess(AccountInterface $account) {
+    $route_name = $this->routeMatch->getRouteName();
+    if ($account->isAnonymous() && !in_array($route_name, array('user.login', 'user.logout'))) {
+      return AccessResult::allowed()
+        ->addCacheContexts(['route.name', 'user.roles:anonymous']);
+    }
+    return AccessResult::forbidden();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function build() {
     return $this->formBuilder->getForm('Drupal\openid_connect\Form\LoginForm');
   }
