Уведомления

Группа в Telegram: @pythonsu

#1 Май 15, 2008 14:29:09

stas
От:
Зарегистрирован: 2008-02-04
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?



Офлайн

#2 Май 15, 2008 18:41:20

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

Если по logout - то загляни в zope.app.security. Можно перегружать у себя в коде различные стандартные зоповские формы login/logout и тд, просто определив их на свой скин или сайт, я много раз так делал. Т.е. copy/past/edit, добавь событие logout (его вроде нету по умолчанию, а может и есть, не смотрел).
Соответственно, на это событие подписываем свой обработчик, делающий запись в логах.
Т.е. писать там 10 строк кода :), но не сам пробовал это делать.



Офлайн

#3 Май 16, 2008 08:58:38

tretiy3
От:
Зарегистрирован: 2007-03-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

stas
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
в zope3 так делал:

прописал адаптер
<adapter factory=“zope.app.security.LogoutSupported” />
он холостой. zope использует его как флаг.

написал свой credential plugin, наследованный от “родного”, в котором переопределил метод logout: copy-paste родной logout + то что мне от него нужно.



Офлайн

#4 Май 17, 2008 12:24:15

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

tretiy3
stas
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
в zope3 так делал:

прописал адаптер
<adapter factory=“zope.app.security.LogoutSupported” />
он холостой. zope использует его как флаг.

написал свой credential plugin, наследованный от “родного”, в котором переопределил метод logout: copy-paste родной logout + то что мне от него нужно.
Согласись однако, что адаптер LogoutSupported нужен-то только для процесса разработки. Я сам его включаю в качестве <!– develop process support –>, чтобы была возможность без перезагрузки браузера выйти из менеджерского аккаунта во время не-автоматического тестирования ( те ручного кликания).
В любом случае, само приложение, на которое повешен фронт-енд сервер, начинается с твоего локального сайта, в PAU которого всегда включается Session Credentials - так что logout на этом уровне работает для интернал-принципалов.

Другой вопрос - я вот думаю, что на корпоративных приложениях, работающих даже внутри 1 локальной сети тоже должен быть фронт-енд (Апач там и тд), повешенный на локальный сайт. У нас куча корпоративных приложений на Zope3, т.е не сайтов, а ERP/CRM, но они распределенные и как правило у клиентов в VPN работают. Естесственно, позади фронт-энда.
Ты разве не так делаешь ?



Офлайн

#5 Май 19, 2008 09:36:32

tretiy3
От:
Зарегистрирован: 2007-03-21
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

astoon
Согласись однако, что адаптер LogoutSupported нужен-то только для процесса разработки.
А вот этого я не знаю, кстати. Пользую именно для InternalPrincipal (Тестирую я через другой браузер, в котором я не залогинен администратором)
Ссылку для logout я оформляю вьюлетом с таким вот кодом:
deg getLink(self):
from zope.app.security.browser.auth import LoginLogout
logout = LoginLogout(self.context, self.request)
link = logout.__call__()
link_list = link.split(u'"')
for v in link_list:
if v.startswith(u'@@'): link = v
return {'url':link, ‘text’:u'выход'}
Я это написал несколько месяцев назад, когда пытался врубиться в zope.app.security и с тех пор не заглядывал. Но это работает :)



Офлайн

#6 Май 19, 2008 16:42:04

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

tretiy3
astoon
Согласись однако, что адаптер LogoutSupported нужен-то только для процесса разработки.
А вот этого я не знаю, кстати. Пользую именно для InternalPrincipal (Тестирую я через другой браузер, в котором я не залогинен администратором)
Ссылку для logout я оформляю вьюлетом с таким вот кодом:
deg getLink(self):
from zope.app.security.browser.auth import LoginLogout
logout = LoginLogout(self.context, self.request)
link = logout.__call__()
link_list = link.split(u'"')
for v in link_list:
if v.startswith(u'@@'): link = v
return {'url':link, ‘text’:u'выход'}
Я это написал несколько месяцев назад, когда пытался врубиться в zope.app.security и с тех пор не заглядывал. Но это работает :)
Сделано интересно.
Но я не пойму, почему у тебя …/logout.html просто не работает. Этот урл по умолчанию можно вызывать на любом объекте если Session Credentials установлен в PAU.

Я его обычно перегружаю, чтобы он вел себя по-другому. В аттаче - пример, т.е. там например вместо редиректа на страницу logout.html, идет редирект на фронт пейдж с появлением соответствующего статус-сообщения. Т.е. главное-то реализовать интерфейс ILogout, а уж как мы там его реализуем - без разницы, все равно будет работать.
А линк на него - просто logout.html на любом объекте …



Офлайн

#7 Май 22, 2008 10:21:35

stas
От:
Зарегистрирован: 2008-02-04
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

Я работаю в Zope 2.9. Мне необходимо как-то зафиксировать момент выхода клиента с данной сессией, возможно это удасться только через апач. Пока не понимаю как обработать данное событие.



Офлайн

#8 Май 22, 2008 13:12:56

astoon
От:
Зарегистрирован: 2007-04-09
Сообщения: 335
Репутация: +  2  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

stas
Я работаю в Zope 2.9. Мне необходимо как-то зафиксировать момент выхода клиента с данной сессией, возможно это удасться только через апач. Пока не понимаю как обработать данное событие.
Все равно проще через Zope3:
cd /opt/zope-2.10.5/lib/python/zope/app/security/browser
попробуй таки использовать как описано выше.

Либо поискать в исходниках Plone - там это есть, но где именно - не смотрел.



Офлайн

#9 Май 26, 2008 14:43:53

stas
От:
Зарегистрирован: 2008-02-04
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение времени пребывания клиента на сервере

Я все-таки не могу понять. Есть какая-нибудь питоновская процедура, которая задействуется если клиент уходит с сервера. Память, выделенная под сессию, должна же освободиться?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version