it-swarm.com.de

\ Drupal :: currentUser () gibt Informationen über den anonymen Benutzer zurück, obwohl ich angemeldet bin

Ich versuche zu überprüfen, ob ein Benutzer angemeldet ist oder nicht. mit \Drupal::currentUser()->id() Ich erhalte die Benutzer-ID für den anonymen Benutzer (d. h. 0), obwohl ich angemeldet bin.

Wie kann ich das beheben?

Ich rufe diese Funktion nur im .module Datei, und es wird nicht von cron ausgeführt. Ich verwende den folgenden Code.

use Drupal\Core\Session\UserSession;
use Drupal\Core\Session\AccountInterface;

$user = \Drupal::currentUser();
if ($user->isAuthenticated()) {
  echo 'logged-in';
}
else {
  echo 'guest';
}

(enter image description here

4
user1960

Um festzustellen, ob ein Benutzer angemeldet (authentifiziert) ist, verwenden Sie am besten Folgendes:

\Drupal::currentUser()->isAuthenticated()

3
Weboide

Anscheinend führen Sie Ihren Code direkt aus Ihrer .module - Datei aus und nicht innerhalb einer Funktion. Auf diese Weise funktioniert Ihr Code möglicherweise nicht, da die meisten Dienste zum Zeitpunkt der Aufnahme der Moduldateien wahrscheinlich nicht instanziiert werden.

Versuchen Sie, Ihren Code von einem Hook aus auszuführen (z. B. hook_entity_view () ) oder verwenden Sie Entwicklungsmodul 's Führen Sie PHP-Code aus Funktionalität (at /devel/php ).

2
derhasi

Ich habe diese Art von Verhalten bei der Verwendung von hook_download_file festgestellt. In meiner Situation musste ich jedoch die Anfrage an Drupal Backend) übergeben und die Datei über Drupal herunterladen. Varnish überprüfte, ob es sich tatsächlich um eine Datei handelt, und entfernte Cookies, die Sitzungsinformationen enthalten.

1
jussil

Versuche dies.

use Drupal\Core\Session\AccountInterface;

function mymodule_function() {
  $account = \Drupal::currentUser();
  if ($account->isAuthenticated()) {
    // User is logged in.
  }
}

Weitere Informationen finden Sie unter dem folgenden Link

https://www.drupal.org/node/2017231

1
Sanjay

Versuchen

\Drupal\user\Entity\User::load(\Drupal::currentUser()->id())->uid->value
0
Yusef

Es scheint, dass der Code im ursprünglichen Beitrag keine Funktion hat, sondern nur in der globalen Spezifikation der Datei, in der er sich befindet, sodass der aktuelle Benutzer wahrscheinlich noch nicht geladen wurde.

0
Jaypan

Um einen robusteren und aussagekräftigeren Code zu erhalten, können Sie die praktische User :: isAnonymous () -Methode verwenden, z.

if (\Drupal::currentUser()->isAnonymous()) {
  // Anonymous user...
}

oder

$user = \Drupal::currentUser();

if ($user->id() == 0) {
    // is visitor
}
else {
    // is logged
}
0
Leopathu