• Immutable Page
  • Info
  • Attachments

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)