Como funcionam as sessões no MoinMoin
As sessões no MoinMoin são implementadas utilizando a framework de autenticação. Para mais detalhes, consulte o tópico AjudaNaAutenticação. Por omissão, a função `MoinMoin.auth.moin_session` encontra-se na lista `config.auth` e é responsável pela gestão das sessões. Pode utilizá-la com qualquer outro método de autenticação, se necessitar de sessões.
Como um programador, de forma a utilizar variáveis de sessões, pode utilizar a `request.session` como um dicionário. Os valores aí armazenados serão guardados automaticamente e restaurados se uma sessão estiver disponível.
O código que utiliza a framework da sessão inclui actualmente:
a funcionalidade de "alterar utilizador" do super utilizador, veja o tópico AjudaComSuperUtilizadores
- o rasto das páginas visitadas
Sessões anónimas
As sessões anónimas são suportadas, ao incluir a função `MoinMoin.auth.moin_anon_session` no `config.auth` e configurando o `config.anonymous_cookie_lifetime`. As cookies das sessões anónimas expiram após as horas definidas em `config.anonymous_cookie_lifetime` (pode ser parcial), no entanto, o acto de expirar não é verificado. O estado guardado é removido uma hora depois da cookie de sessão expirar.
Substituir moin_session
É possível substituir o `moin_session` na lista de configuração `auth`. A autenticação que lidar com a nova sessão deve pedir o `request.session` baseado numa cookie ou em outros dados. O objecto `request.session` tem de ser um objecto do tipo dicionário e deve implementar a duração dos dados de sessão, cf. `MoinMoin.auth.SessionData`.
Exemplo de código de sessão
Eis um exemplo de macros, utilizando o código de sessão:
1 # -*- coding: iso-8859-1 -*-
2
3 """
4 Testa o estado da sessão.
5 """
6
7 Dependencies = ['time']
8
9 def execute(macro, args):
10 if 'test' in macro.request.session:
11 return macro.formatter.text(macro.request.session['test'])
12 import random
13 value = random.randint(1, 100000)
14 macro.request.session['test'] = value
15 return macro.formatter.text("set to value %d" % value)