• 0
bossalex

[DELPHI FMX Android] [6.0] Не удается загрузить SSL библиотеку

Вопросы

Недавно компилил приложение на Delphi  FMX Android  при обращении  к серверу https при выполнении Get запроса от компонента TIdHttp запросил библиотеку "Could not load SSL library" используется протокол sslvTLSv1_2 в windows все пашет в андроид нет , накопал что можно подключить библиотеки  libssl.so и  libcrypto.so через  deployment .assets\internal , А вот как в коде дальше их использовать никто примерчик не выложил, хоть и обсуждали на интернет просторах 100 раз, те как прикрутить  к IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile. Если есть у кого код выложите пожалуйста? или скинте по email bossalex@ya.ru

IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method.sslvTLSv1_2;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode.sslmUnassigned;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 ответ на этот вопрос

  • 1
4 часа назад, bossalex сказал:

Недавно компилил приложение на Delphi  FMX Android  при обращении  к серверу https при выполнении Get запроса от компонента TIdHttp запросил библиотеку "Could not load SSL library" используется протокол sslvTLSv1_2 в windows все пашет в андроид нет , накопал что можно подключить библиотеки  libssl.so и  libcrypto.so через  deployment .assets\internal , А вот как в коде дальше их использовать никто примерчик не выложил, хоть и обсуждали на интернет просторах 100 раз, те как прикрутить  к IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile. Если есть у кого код выложите пожалуйста? или скинте по email bossalex@ya.ru

IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method.sslvTLSv1_2;
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode.sslmUnassigned;

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 30.09.2017 в 03:01, bossalex сказал:

 

Просто пытаетесь выполнить get запрос? Очень странно, у меня все работало. Даже в справке от эмбы написано:

For OS X and Android, your application does not need to meet any prerequisite for TLS/SSL support. The required OpenSSL library is available by default on those operating systems.

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Securing_Indy_Network_Connections

Может дело в версии студии/ведра?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
12 минуты назад, M1shQa сказал:

Может дело в версии студии/ведра?

все дело в TidHTTP (Indy) - его нельзя использовть под Андроидом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

 

3 часа назад, Равиль Зарипов (ZuBy) сказал:

все дело в TidHTTP (Indy) - его нельзя использовть под Андроидом

Систем.нет.хттп? Кстати да, на андроиде все плохо, особенно когда ковырял сервис, в сервисе заработал только систем нет сокет..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, M1shQa сказал:

 

Систем.нет.хттп? Кстати да, на андроиде все плохо, особенно когда ковырял сервис, в сервисе заработал только систем нет сокет..

System.Net.* - нативный, он на всех платформах работает правильно, а Indy не работает на андроиде, т.к. используется другая либа (не boringSSL)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Кто знает как яндекс почту прикрутить к indy с ssl под дектоп работает, под андроид раньше работало сейчас оред что в отладке при коннекте SMTP не загружена библиотека SSL ранше использовал связку tidSMTP+tidMessage+IdSSLIOHandlerSocketOpenSSL c 465 портом

Этото код работает в десктопе на яндексе под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll

Function TFormOFORMLENIE.mail(email:STRING):Boolean;
var email:String;
begin
  try
    Smtp.AuthType:=satDefault;
    SMTP.ReadTimeout:=10000;
    SMTP.Host := 'smtp.yandex.ru';
    SMTP.Port := 465;
    SMTP.Username :=login;
    SMTP.Password :=pass;

    SMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL1;
    SMTP.UseTLS:= utUseImplicitTLS;

    IdSSLIOHandlerSocketOpenSSL1.Destination := SMTP.Host+':'+IntToStr(SMTP.Port);
    IdSSLIOHandlerSocketOpenSSL1.Host := SMTP.Host;
    IdSSLIOHandlerSocketOpenSSL1.Port := SMTP.Port;
    IdSSLIOHandlerSocketOpenSSL1.DefaultPort := 0;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvTLSv1;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
    MailMessage.From.Name := 'Тест';
    MailMessage.Subject := 'Тест: '+FormatDateTime('dd.mm.yy-hh:nn',Now) ;

    MailMessage.From.Address :='bossalex@ya.ru';
    MailMessage.Recipients.EMailAddresses := email;
    MailMessage.Body.Text := MemoTXT.Text;
  try
      try
        SMTP.Connect;// орет нет библиотеки SSL - под win рабоатает со внешними библиотекеми SSL типа libeay32.dll ssleay32dll только не FMX на VCL к яндексу коннектися и отправляет письма,

// есть еще libgcc_s_dw2-1.dll libwinpthread-1.dll msvcr100.dll правда не помню тоже какието библиотеки забыл для чего, надо в инете поковырять
        sleep(200);
        Application.ProcessMessages;
        SMTP.Send(MailMessage);
        ShowMessage('Письмо отправлено!');
        MailMessage.MessageParts.Clear;
      except
        on e: Exception do
        begin
          sleep(200);
          ShowMessage('Письмо не отправлено!');
        end;
      end;
    finally
      MailMessage.MessageParts.Clear;
      SMTP.Disconnect;
    end;
  except
  end;
end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

На андроиде с версии 6+ Гугл перешёл на boringSSL, которая не поддерживается инди

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

На stackoverflow описано решение этой проблемы. Суть в том, что мы принудительно заставляем Indy использовать OpenSSL вместо BorinSSL:

1. добавляем в project deployment для андроида 2 файла: libcrypto.so и libssl.so (взять их можно на https://forums.embarcadero.com/thread.jspa?threadID=211147), в качестве Remote path для обоих файлов указываем .\assets\internal

2. убеждаемся, что в .dpr модуль System.StartUpCopy указан самым первым

3. при запуске приложения вызываем IdOpenSSLSetLibPath(TPath.GetDocumentsPath) 

примечание к версии SSL - на файлы по ссылке из п.1 Google не выдает предупреждений, а на более старые версии будет ругаться

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 08.11.2017 в 13:54, Tumaso сказал:

На stackoverflow описано решение этой проблемы. Суть в том, что мы принудительно заставляем Indy использовать OpenSSL вместо BorinSSL:

1. добавляем в project deployment для андроида 2 файла: libcrypto.so и libssl.so (взять их можно на https://forums.embarcadero.com/thread.jspa?threadID=211147), в качестве Remote path для обоих файлов указываем .\assets\internal

2. убеждаемся, что в .dpr модуль System.StartUpCopy указан самым первым

3. при запуске приложения вызываем IdOpenSSLSetLibPath(TPath.GetDocumentsPath) 

примечание к версии SSL - на файлы по ссылке из п.1 Google не выдает предупреждений, а на более старые версии будет ругаться

Добрый день!

На Androide7 у меня не работает! Все равно выдает Could not load SSL!  Как на Андроиде 7 передать почту используя SSL. На Андроиде 5 почта  с SSL передается вообще без проблем 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
23 часа назад, Юрий Гусач сказал:

Добрый день!

На Androide7 у меня не работает! Все равно выдает Could not load SSL!  Как на Андроиде 7 передать почту используя SSL. На Андроиде 5 почта  с SSL передается вообще без проблем 

Лучший вариант отказаться от Indy и использовать родную библиотеку из модуля System.Net.HttpClient и THTTPClient. Она и более стабильная на всех 4 ОС и SSL работает прозрачно.

Что означает "передать почту"?

 

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

[ENERGY] Подскажите тогда, как с помощью родной библиотеки отправить e-mail адресату из приложения? Компоненты Indy позволяют это сделать!

Скачайте просто свежий SSL с сайта Indy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, wamaco сказал:

[ENERGY] Подскажите тогда, как с помощью родной библиотеки отправить e-mail адресату из приложения? Компоненты Indy позволяют это сделать!

Скачайте просто свежий SSL с сайта Indy

Я отправляю через PHP скрипт, а скрипт отправляет через SMTP хостинг сервера, который в данный момент работает. Т.е. отправляю письмо через POST запрос. Так можно и лог вести на сервере.

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
33 минуты назад, ENERGY сказал:

Я отправляю через PHP скрипт, а скрипт отправляет через SMTP хостинг сервера, который в данный момент работает. Т.е. отправляю письмо через POST запрос. Так можно и лог вести на сервере.

Ну вот... вопрос? а если сервера нет.... и задача этого не требует... приплыли?

через post запрос любой сможет! 😂

Как обойти, я написал выше! Скачать валидный SSL

Изменено пользователем wamaco

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
23 минуты назад, wamaco сказал:

Ну вот... вопрос? а если сервера нет.... и задача этого не требует... приплыли?

через post запрос любой сможет! 😂

Как обойти, я написал выше! Скачать валидный SSL

В смысле сервера нет? А через какой SMTP тогда почта отправляется? Через сервер хостинг провайдера.

На деле это проще реализуется, чем кажется. Ведь даже "отправить комментарий разработчику", проще сделать через такой PHP скрипт, чем заморачиватся с Indy и SMTP компонентами.

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, ENERGY сказал:

В смысле сервера нет? А через какой SMTP тогда почта отправляется? Через сервер хостинг провайдера.

На деле это проще реализуется, чем кажется.

Почта отправляется напрямую, без php скриптов и вашего сервера! и не надо никаких скриптов!

Вы же имеете ввиду, что вы запускаете скрипт PHP на своем сервере и шлете почту! так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 минут назад, wamaco сказал:

Почта отправляется напрямую, без php скриптов и вашего сервера! и не надо никаких скриптов!

Вы же имеете ввиду, что вы запускаете скрипт PHP на своем сервере и шлете почту! так?

Ну как это напрямую, на деревню дедушке что-ли? На SMTP сервер же. А где вы его берете? Не бесплатными же пользоваться, которые могут забанить в любое время, по любым причинам, с лимитированным кол. писем.

Я из программы вызываю https://mysite.com/sendemail.php  с post параметрами. Все шифруется с https. И дальше уже заботы PHP скрипта и сервера.

 

 

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
23 минуты назад, ENERGY сказал:

Ну как это напрямую, на деревню дедушке что-ли? На SMTP сервер же. А где вы его берете? Не бесплатными же пользоваться, которые могут забанить в любое время, по любым причинам, с лимитированным кол. писем.

Я из программы вызываю https://mysite.com/sendemail.php  с post параметрами. Все шифруется с https. И дальше уже заботы PHP скрипта и сервера.

 

 

По-моему, Вы не знаете, как работает Indy. Используя эти компоненты, можно послать письмо, минуя свой сервер, вы сразу настраиваете параметры отсылки, аналогично, любому почтовому клиенту и отсылаете письмо! 

например, я не знаю и знать не хочу PHP и сервера у меня нет! как мне отослать письмо с приложения? INDY спешит на помощь!

Вот пример:

var
  SMTP    : TIdSMTP;
  msg     : TIdMessage;
  SSLOpen : TIdSSLIOHandlerSocketOpenSSL;
begin
  SMTP := TIdSMTP.Create(Application);
  SMTP.Host := 'smtp.mail.ru';
  SMTP.Port := 465;
  SMTP.AuthType := satDefault;
  SMTP.Username := 'моя почта@mail.ru';
  SMTP.Password := 'пароль от моей почты ';
 
  //это необходимо использовать для SSL
  SSLOpen := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  SSLOpen.Destination := SMTP.Host+':'+IntToStr(SMTP.Port);
  SSLOpen.Host := SMTP.Host;
  SSLOpen.Port := SMTP.Port;
  SSLOpen.DefaultPort := 0;
  SSLOpen.SSLOptions.Method := sslvSSLv23;
  SSLOpen.SSLOptions.Mode := sslmUnassigned;
 
  SMTP.IOHandler := SSLOpen;
  SMTP.UseTLS := utUseImplicitTLS;
 
  msg := TIdMessage.Create(Application);
  msg.Subject := 'Проверка почты';
  msg.From.Address := 'моя почта@mail.ru';
  msg.From.Name := 'AlexF';
  msg.Recipients.EMailAddresses := 'почта получателя@yandex.ru';
 
  SMTP.Connect;
  if SMTP.Connected then
    begin
      SMTP.Send(msg);
      ShowMessage ('Сообщение отправлено');
    end else
      ShowMessage ('Не удалось отправить сообщение');
  SMTP.Disconnect();
  SMTP.Free;
  msg.Free;
end;
Изменено пользователем wamaco

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Посмотрите на пример Indy наверху. Там написано: 

  SMTP.Host := 'smtp.yandex.ru';
Вот про него я и говорю, что бесплатный SMTP сервер это очень нестабильная вещь, и забанить там могут в любое время, по любой причине. Кстати, smtp.yandex.ru в Украине не будет работать.

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 минуты назад, ENERGY сказал:

Посмотрите на пример Indy наверху. Там написано: 

  SMTP.Host := 'smtp.yandex.ru';
Вот про него я и говорю, что бесплатный SMTP сервер это очень нестабильная вещь, и забанить там могут в любое время, по любой причине. Кстати, smtp.yandex.ru в Украине не будет работать.

Это просто Вам, как пример! Еще раз... отправить письмо надо! Сервера нет! (нет денег содержать, нет возможностей и т.д.)

Вы сделали приложение, передали заказчику, там функционал отправки письма! Кто оплачивает сей фуршет по отправке? 😂

Вы держите сервер и всех там обслуживаете?

Изменено пользователем wamaco

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Смысл от такого функционала, если через неделю он не будет работать, причем разработчик об этом не будет знать, т.к. письма не будут доходить. А так, да, заказчик должен арендовать хостинг, 2-3$ в месяц не такая большая цена, где все есть "в пакете" и уже готово к работе. Причем на хостинге обычно и база находится и\или вебсайт.

Изменено пользователем ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

>Кстати, smtp.yandex.ru в Украине не будет работать.

Все работает. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 часов назад, ENERGY сказал:

Смысл от такого функционала, если через неделю он не будет работать, причем разработчик об этом не будет знать, т.к. письма не будут доходить. А так, да, заказчик должен арендовать хостинг, 2-3$ в месяц не такая большая цена, где все есть "в пакете" и уже готово к работе. Причем на хостинге обычно и база находится и\или вебсайт.

Слишком много ЕСЛИ.... 

Задачи разные бывают и приложения тоже. Мы говорим про конкретную задачу отправки письма из приложения. Способов несколько, использование Indy позволяет это сделать без стороннего хостинга.

А через неделю и Ваш хостинг может загнуться, ввиду не оплаты, форс мажора и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вообще не совсем понятно зачем делать отправку письма из приложения.

Я придерживаюсь мнения что захардкоренные места не нужно держать в приложении, при обновлении параметров smtp сервера вы никак не сможете починить быстро

самый простой способ это хостинг ну или текущий сайт компании, там реализовать отправку письма как предлагал @ENERGY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Tarik Live
      Здравствуйте! Уже почти неделю пытаюсь завести библиотеку org.eclipse.paho.client.mqttv3-1.2.0 в своём приложении. Я знаю о существовании компонента от TMS, но он не умеет работать в фоновом сервисе.
      Вот код который я использую для тестов:
       
      Стандартная библиотека org.eclipse.paho.client.mqttv3-1.2.0 выпадает в ошибку initializer error сразу на строчке 
      mqtt:=TJMqttClient.JavaClass.init(StringToJString('tcp://m23.cloudmqtt.com:11021'), StringToJString('java')); по логам с телефона стало понятно, что проблема в логах 😐 а конкретно когда библиотека пытается создать логгер выпадает ошибка что не найден файл локализации ru_RU для logcat (сами файлы там вроде как есть). Ладно. Скачал исходники почистил код библиотеки от упоминаний логгера, собрал ииии и ничего. Продвинулся до строчки 
      mqtt.connect(); также пробивал 
      mqtt.connect(mqttconopt); ничего не помагает, получаю ошибку сегментации класса 
      Пока не понятно куда копать дальше? Возможно что не все библиотеки можно использовать в delphi приложениях? 

      P.S Старая версия 1.1.1 тоже не завелась :(
      service test2.rar
    • От Юрий Гусач
      Доброго дня!
      Проясните пожалуйста ситуацию: при запуске программы  под Андроидом на различных устройствах я получаю размеры формы, которые вроде всегда в разы меньше чем максимальное разрешение экрана конкретного устройства. Я пробовал планшеты и разные смартфоны. Написал тестовую прогу, которая выводит СlientScreen и  ClientWidth формы, на которой ничего больше нет. Например для крайне бюджетного смартфона Fly FS-549 получилось 497 х 320, а по паспорту 854x480. Разрешение и так хреновое, а Delphi его еще сильнее уменьшает. -       Почему это происходит и можно ли как то это обойти?
       
       
    • От Андрей Лещинский
      Здравствуйте ребята. С Firemonkey знаком только два дня. Многое уже подчеркнул с данного форума. Спасибо вам. 
      Проблема заключается в том, что у меня sdk для андроид 7 версии. Я собираю apk файл, запускаю его на Андроид 7 и все отлично, но как только я устанавливаю приложение на Андроид например версии 5, то при запуске оно мерцает пару раз и потом отображается отлично. Не подскажите в чем проблема? Я пробовал проект с данного форума, чтобы форма уходила под статусбара. Вот все они и мерцают на Андроид ниже 7, другие не пробовал проекты
      Стаж у меня только 2 дня, скажите в какую сторону смотреть мне далее
    • От gutalin79
      Почему при добавлении MapView в пример Android Service, приложение перестает работать?
      AndroidSimpleService.zip
       
       
       
      Пример делал по этому видео: 
       
    • От Astghik
      Hello !!!
      I want onButtonClick create popup. I use TPopup component. All good, but on android "Back button" click closing forma. But I want close popup (when popup is shown).

       
      //---------------------------------------------------------------------------------
      void __fastcall  btn3PointsClick(TObject *Sender)
      {
          PopUpSettings->IsOpen = true;
          PopUpSettings->PlacementTarget = btn3Points;
          PopUpSettings->BringToFront();
      }
      //-------------------------------------------------------------------------------------
      void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose)
      {
          try {
              if (PopUpSettings->IsOpen == true) {
                  CanClose = false;
              }
              else {
                  CanClose = true;
              }
          } __finally {
              PopUpSettings->IsOpen = false;
          }
      }
      //-------------------------------------------------------------------
       
    • От Rokweb
      Таймер с интервалом 1мс заметно подтормаживает во время выполнения анимации TFloatAnimation в Tokyo. У всех так или только у меня?
    • От Rokweb
      Здравствуйте.
      Речь пойдёт об Android.
      Использовал в Berlin данный unit для проигрывания звуков (TMediaPlayer не подходит) и все отлично работало. Сейчас перешел на Tokyo и происходит зависание в цикле:
       
      while not GLoaded do begin Sleep(10); Application.ProcessMessages; end;  
      Модуль прикрепил в сообщении.
       
      Так же интересует - возможно ли, использовать стиль, созданный в процессе разработки Android приложения - в iOS и если да - то как это правильно реализовать (почти каждый контрол имеет сейчас свой стиль)?
       
      Прошу помощи.
      GameAudioManager.zip
    • От zekelive
      Товарищи, здравствуйте. Хотел бы проконсультироваться с вами на довольно сложно для меня тему. Имеется клиентское мобильное приложение на Андроид. Принцип его просто, загружает фирмы из БД в scrollbox. За счёт того, что сразу загрузка всех данных из сервера занимает длительное время, было принято решение загружать с сервера только ключевую информацию (название фирмы), а остальную информацию загружать из локальной БД. При этом, т.к. файл БД можно легко вытащить из apk файла любому человеку, размещать всю БД на локалке нельзя. Только информацию в целом не представляющую большой значимости в отдельности от названия фирмы и не только. 
      Вопрос, правильная ли схему построения была выбрана с точки зрения защиты данных (если это так можно назвать), и оптимизации загрузки информации. 
      Приветствуются ваши советы, как лучше построить схему взаимодействия приложения с БД, или как лучше защитить данные. В идеале для быстродействия, загнать побольше данных в локальную БД. 
    • От Edward Tarasov
      Привет всем. кто сталкивался с такой ерундой, что в webbrowser вместо сайта тупо белый экран?? причем сам сайт отображаеться норм, и на том же планшете, но в стандартном бразуере и на компе... и именно этот сайт не пашет из приложения
    • От Юрий Гусач
      Есть немного странная проблема!
      Пытаюсь написать программу посылающую почту со смартфона.Используются Indy компоненты TIdSMTP,TIdMessage и TIdSSLIOHandlerSocketOpenSSL. Под Windows с компа все работает нормально.
      но если тема, имя адресата или имя посылающего содержат русские буквы, то если посылать почту со смартфона, они появляются в пришедшем письме вопросиками. Понятно, что дело в кодировке. Не могу найти что менять. Само тело письма пишется с кодировкой UTF-8 и отображается везде по русски совершенно нормально. Имена и тема с русскими буквами с компьютера и Windows приходят правильно, со смартфона(при компиляции под Android) приходят неправильно. Перепробовал вроде почти все комбинации.
      Почта со смартфона при наборе вручную тоже работает нормально. Дело по-видимому в конфигурации TIdMessage, а где не пойму.  Работаю в Delphi XE10, смартфон Samsung J3, Android 5.1.1  
      Проще всего конечно не использовать в теме письма русские буквы, при  этом все работает,  но это не нравится, потому что непонятно почему так происходит. 
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу