Jump to content

Как обновить IP адрес во время сессии?


x11

Recommended Posts

Я так понял, что свойство RemoteHost заполняется только при входе, а потом, даже если IP адрес меняется на устройстве, то свойстве RemoteHost остается старый адрес.

Как принудительно обновить адрес в RemoteHost?

Спасибо.

Link to comment
Share on other sites

23 hours ago, x11 said:

Я так понял, что свойство RemoteHost заполняется только при входе, а потом, даже если IP адрес меняется на устройстве, то свойстве RemoteHost остается старый адрес.

Как принудительно обновить адрес в RemoteHost?

Используйте

UniSession.ARequest.RemoteIP

 

  • Thanks 1
Link to comment
Share on other sites

Проблема в другом.

Я пытаюсь создать монитор пользователей, кто подключен и какая форма открыта.

На основе вашего примера, где используется UniServerModule.SessionManager.Sessions

      // Here we do a fast copy of list to another array for later use.
      for I := 0 to Pred(S.SessionList.Count)  do
      begin
        U := S.SessionList[I];
        fSessionList[I].ASessionId  := U.SessionId;
        fSessionList[I].AIP         := U.RemoteIP;

и вот здесь IP не меняется, не актуализируется

 

Link to comment
Share on other sites

Сессии себя ведут странно. Я уже на смартфоне закрыл браузер 28 минут назад, а сессии все еще живут.

Как такое может быть?

SessionTimeuot 15 минут.

Откуда в UniServerModule.SessionManager.Sessions до сих пор живут сессии, которые были пол часа назад прекращены?

Что я делаю не так?

 

Добавлю еще, что у меня есть код для автоматического продления сессии:

procedure TUniMainModule.UniGUIMainModuleSessionTimeout(ASession: TObject; var  ExtendTimeOut: Integer);
begin
  if not AllowTerminate then
    ExtendTimeOut := UniServerModule.SessionTimeout;// продлеваем сессию
end;

Но ведь я закрыл браузер на смартфоне. Почему сессия продлевается?

Screenshot_10.jpg

Screenshot_11.jpg

Link to comment
Share on other sites

20 hours ago, Sherzod said:
U.ARequest.RemoteIP;

 

на этой строке получаю исключение (ошибку) AV - Access violation

 fSessionList[I].AIP         := U.ARequest.RemoteIP;

 

Но ошибка только, если запустить монитор сессии еще раз параллельно с другого браузера.

Т.е. когда один пользователь уже работает, то ошибки нет. Когда второй пользователь тоже хочет открыть монитор сессий, то U.ARequest возвращает nil.

 

Screenshot_1.jpg

Link to comment
Share on other sites

On 12/6/2021 at 5:52 PM, x11 said:

Но ошибка только, если запустить монитор сессии еще раз параллельно с другого браузера.

Т.е. когда один пользователь уже работает, то ошибки нет. Когда второй пользователь тоже хочет открыть монитор сессий, то U.ARequest возвращает nil.

 

2 hours ago, x11 said:

up

Пожалуйста, создайте тестовый проект. 

Link to comment
Share on other sites

1 hour ago, Sherzod said:

Пожалуйста, создайте тестовый проект. 

Возьмите свой пример (\Demos\Desktop\Session List) из Demo и замените там 72 строку

ASessionList[I].AIP := U.ARequest.RemoteIP;// U.RemoteIP;

и запустите в разных браузерах

Screenshot_15.jpg

Link to comment
Share on other sites

On 12/6/2021 at 5:52 PM, x11 said:

на этой строке получаю исключение (ошибку) AV - Access violation

 fSessionList[I].AIP         := U.ARequest.RemoteIP;

Попробуйте такой подход:

1.  fSessionList[I].AIP         := U.ARequest.RemoteIP; используйте 

U.RemoteIP

2. 

procedure TUniMainModule.UniGUIMainModuleHandleRequest(ASession: TObject;
  var Handled: Boolean);
begin
  with (ASession as TUniGUISession) do
    RemoteIP := ARequest.RemoteIP
end;

 

  • Thanks 1
Link to comment
Share on other sites

Спасибо, вроде получилось.

Было бы хорошо, если бы это исправили в uniGUI, чтобы не использовать данный костыль.

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...