Документация для разработчиков
Темная тема

Login

Описание и параметры

mixed
CUser::Login(
	string login,
	string password,
	string remember = "N",
	string password_original = "Y"
)

Метод проверяет логин и пароль и если они корректные, то авторизует пользователя. Если авторизация успешная, то возвращает "true", иначе если логин и пароль некорректные, то возвращает массив с ошибкой для функции ShowMessage. Если было превышено количество попыток подключения метод просто не будет авторизовывать пользователя с ошибкой "Неправильный логин или пароль". Нестатический метод.

Параметры

ПараметрОписание С версии
login Логин пользователя.
password Пароль. Если параметр convert_password_to_md5 = "Y", то в данном параметре необходимо передавать оригинальный пароль, в противном случае необходимо передавать md5 от оригинального пароля.
remember Если значение равно "Y", то авторизация пользователя будет сохранена в куках (при следующем заходе посетитель будет автоматически авторизован), в противном случае - авторизация не будет сохранена в куках. В куках сохраняется специальный хеш получаемый с помощью CUser::GetPasswordHash. Затем когда посетитель снова приходит на сайт, система его автоматически авторизует используя CUser::LoginByHash
Необязательный. По умолчанию "N".
password_original Если значение равно "Y", то это означает что password ещё не сконвертирован в MD5 (т.е. в параметре password передается реальный пароль вводимый пользователем с клавиатуры), если значение равно "N", то это означает что password уже сконвертирован в MD5.
Для текущего авторизованного пользователя MD5 от реального пароля можно получить с помощью метода $USER->GetParam("PASSWORD_HASH"). Для произвольного пользователя MD5 от пароля можно получить с помощью CUser::GetByID (поле "PASSWORD").
Необязательный. По умолчанию "Y". До версии 4.0.6 назывался pass2md5.
3.0.10

Примеры использования

<?
global $USER;
if (!is_object($USER)) $USER = new CUser;
$arAuthResult = $USER->Login("admin", "123456", "Y");
$APPLICATION->arAuthResult = $arAuthResult;
?>


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Techno-Med
Сообщение не промодерировано, возможны ошибки и неточности.
Неточность в документации:
"Нестатический метод" - почему тогда у вас
Код
CUser::Login
а не
Код
$CUser = new CUser();

$CUser->Login()
?
3
Владимир Савчук
Сообщение не промодерировано, возможны ошибки и неточности.
Если авторизация происходит аякс-запросом, то после существующего header перед умиранием (die) добавьте код:
Код
\Bitrix\Main\Context::getCurrent()->getResponse()->writeHeaders();      
Иначе кукисы могут не прописаться. Особенно это касается при remember = Y
3
Артемий Зайцев
Пример, как проверить логин/пароль без авторизации.
Работает для версии 10.0 и младше. В будущих редакциях Битрикса может измениться.
В текущей версии пароль хранится как 8 случайных символов + md5

Код
$login_password_correct = false;

if (
   isset( $_REQUEST['login'] ) && strlen( $_REQUEST['password'] ) > 0
&&
   isset( $_REQUEST['login'] ) && strlen( $_REQUEST['password'] ) > 0
)
{

   $rsUser = CUser::GetByLogin( $_REQUEST['login'] );
   if ($arUser = $rsUser->Fetch())
   {
      if(strlen($arUser["PASSWORD"]) > 32)
      {
         $salt = substr($arUser["PASSWORD"], 0, strlen($arUser["PASSWORD"]) - 32);
         $db_password = substr($arUser["PASSWORD"], -32);
      }
      else
      {
         $salt = "";
         $db_password = $arUser["PASSWORD"];
      }

      $user_password =  md5($salt.$_REQUEST['password']);

      if ( $user_password == $db_password )
      {
         $login_password_correct = true;
      }
   }
}
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх