Найти - Пользователи
Полная версия: Определение времени пребывания клиента на сервере
Начало » Zope/Plone/Bluebream » Определение времени пребывания клиента на сервере
1
stas
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
astoon
Если по logout - то загляни в zope.app.security. Можно перегружать у себя в коде различные стандартные зоповские формы login/logout и тд, просто определив их на свой скин или сайт, я много раз так делал. Т.е. copy/past/edit, добавь событие logout (его вроде нету по умолчанию, а может и есть, не смотрел).
Соответственно, на это событие подписываем свой обработчик, делающий запись в логах.
Т.е. писать там 10 строк кода :), но не сам пробовал это делать.
tretiy3
stas
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
в zope3 так делал:

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

написал свой credential plugin, наследованный от “родного”, в котором переопределил метод logout: copy-paste родной logout + то что мне от него нужно.
astoon
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 работают. Естесственно, позади фронт-энда.
Ты разве не так делаешь ?
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 и с тех пор не заглядывал. Но это работает :)
astoon
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 на любом объекте …
stas
Я работаю в Zope 2.9. Мне необходимо как-то зафиксировать момент выхода клиента с данной сессией, возможно это удасться только через апач. Пока не понимаю как обработать данное событие.
astoon
stas
Я работаю в Zope 2.9. Мне необходимо как-то зафиксировать момент выхода клиента с данной сессией, возможно это удасться только через апач. Пока не понимаю как обработать данное событие.
Все равно проще через Zope3:
cd /opt/zope-2.10.5/lib/python/zope/app/security/browser
попробуй таки использовать как описано выше.

Либо поискать в исходниках Plone - там это есть, но где именно - не смотрел.
stas
Я все-таки не могу понять. Есть какая-нибудь питоновская процедура, которая задействуется если клиент уходит с сервера. Память, выделенная под сессию, должна же освободиться?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB