Как узнать, является ли пользователь посетителем или зарегистрированным пользователем?

30

Как я могу программно определить, является ли текущий пользователь анонимным или аутентифицированным?

Аксель Брише
источник

Ответы:

57

Ради более надежного и описательного кода вы можете использовать удобный User::isAnonymous()метод, например

if (\Drupal::currentUser()->isAnonymous()) {
  // Anonymous user...
}
Клайв
источник
2
По возможности используйте такие методы: запрограммируйте интерфейс, а не реализацию. Использование IDE с дополнением кода неоценимо для работы в Drupal 8.
mpdonadio
3
Для всех, кто сталкивается с этим, обратите внимание, что \ Drupal :: currentUser () -> isAuthenticated () является эквивалентом D7 user_is_logged_in ()
Jaypan
Я создал собственный модуль и не могу заставить эту функцию работать. Что-то еще нужно добавить в мой модуль? Заранее спасибо.
SuperTony
6
  $current= \Drupal::currentUser();
  if (!$current->id()) {
    // is visitor
  }
  else {
    // is logged
  }
Аксель Брише
источник
-4

Вы можете использовать этот код ::

global $user;
if ($user->uid == 0) {
  //user is not logged in
}else{
  //user is logged in
}
Махди Алихаси
источник
2
Код Drupal работает для Drupal 7, но не для Drupal 8
Dev
1
Да, и используйте === для строгого сравнения и поставьте пробел до и после вашего остального для стандартов кодирования: /
klidifia