##master-page:HelpTemplate ##master-date:Unknown-Date #format wiki #language pt = Como funcionam as sessões no MoinMoin = As sessões no [[WikiMoinMoin|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: {{{ #!python # -*- coding: iso-8859-1 -*- """ Testa o estado da sessão. """ Dependencies = ['time'] def execute(macro, args): if 'test' in macro.request.session: return macro.formatter.text(macro.request.session['test']) import random value = random.randint(1, 100000) macro.request.session['test'] = value return macro.formatter.text("set to value %d" % value) }}}