Форум сайта python.su
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
Офлайн
Если по logout - то загляни в zope.app.security. Можно перегружать у себя в коде различные стандартные зоповские формы login/logout и тд, просто определив их на свой скин или сайт, я много раз так делал. Т.е. copy/past/edit, добавь событие logout (его вроде нету по умолчанию, а может и есть, не смотрел).
Соответственно, на это событие подписываем свой обработчик, делающий запись в логах.
Т.е. писать там 10 строк кода :), но не сам пробовал это делать.
Офлайн
stasв zope3 так делал:
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
Офлайн
tretiy3Согласись однако, что адаптер LogoutSupported нужен-то только для процесса разработки. Я сам его включаю в качестве <!– develop process support –>, чтобы была возможность без перезагрузки браузера выйти из менеджерского аккаунта во время не-автоматического тестирования ( те ручного кликания).stasв zope3 так делал:
Я могу зафиксировать время появления клинта на сайте, его логин и уникальную сессию. Как определить, когда он уходит с сервера?
прописал адаптер
<adapter factory=“zope.app.security.LogoutSupported” />
он холостой. zope использует его как флаг.
написал свой credential plugin, наследованный от “родного”, в котором переопределил метод logout: copy-paste родной logout + то что мне от него нужно.
Офлайн
astoonА вот этого я не знаю, кстати. Пользую именно для InternalPrincipal (Тестирую я через другой браузер, в котором я не залогинен администратором)
Согласись однако, что адаптер LogoutSupported нужен-то только для процесса разработки.
Офлайн
tretiy3Сделано интересно.astoonА вот этого я не знаю, кстати. Пользую именно для InternalPrincipal (Тестирую я через другой браузер, в котором я не залогинен администратором)
Согласись однако, что адаптер LogoutSupported нужен-то только для процесса разработки.
Ссылку для 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 и с тех пор не заглядывал. Но это работает :)
Офлайн
Я работаю в Zope 2.9. Мне необходимо как-то зафиксировать момент выхода клиента с данной сессией, возможно это удасться только через апач. Пока не понимаю как обработать данное событие.
Офлайн
stasВсе равно проще через Zope3:
Я работаю в Zope 2.9. Мне необходимо как-то зафиксировать момент выхода клиента с данной сессией, возможно это удасться только через апач. Пока не понимаю как обработать данное событие.
Офлайн
Я все-таки не могу понять. Есть какая-нибудь питоновская процедура, которая задействуется если клиент уходит с сервера. Память, выделенная под сессию, должна же освободиться?
Офлайн