Come funzionano le sessioni in MoinMoin
Le sessioni in MoinMoin sono implementate usando dei gestori di sessione speciali che possono essere configurati in `cfg.session_handler`. In modo predefinito, viene usata un'istanza della classe `MoinMoin.session.DefaultSessionHandler` per la gestione delle sessioni.
Il codice che fa uso del framework per la sessione è:
la funzionalità del super-utente per "cambiare utente", consultare AiutoSuSuperUtente
- la coda delle pagine visitate
Configurazione relativa alla sessione
cookie_domain |
`None` |
Dominio usato nel cookie di sessione. |
cookie_path |
`None` |
Percorso usato nel cookie di sessione. |
cookie_lifetime |
`12` |
=0: per sempre, ignora l'impostazione `'remember_me'`; >0: `n` ora o per sempre se l'utente ha selezionato `'remember_me'`; <0 `-n` ore, ignora l'impostazione `'remember_me'`. |
anonymous_session_lifetime |
`non definito` |
Impostare a un valore diverso da zero per abilitare le sessioni anonime (può essere anche un valore frazionario) [ore]. |
Se viene eseguita una wiki farm e si desidera condividere il cookie di sessione tra i wiki nella farm, è utile modificare `cookie_domain` e/o `cookie_path`.
Affinché gli utenti anonimi possano usufruire delle caratteristiche della sessione normale, impostare `anonymous_session_lifetime`.
Sostituire l'archiviazione della sessione
Se si desidera archiviare i dati di sessione in una posizione diversa rispetta la cache nel file system usata da Moin, è possibile usare `DefaultSessionHandler` con le diverse classi fino a `DefaultSessionData`. Per maggiori informazioni, consultare il file `MoinMoin/session.py`.
È anche possibile, ma non raccomandato, utilizzare un gestore di sessione diverso.
Codice di esempio
Per usare le variabili di sessione, un programmatore di estensioni può usare `request.session` come un dizionario, i valori lì archiviati sono salvati automaticamente e ripristinati se è disponibile una sessione. Sono possibili utilizzi più avanzati, consultare `MoinMoin.session.SessionData` nel file `MoinMoin/session.py`.
Ecco un esempio di macro che fa uso del codice per la sessione:
1 # -*- coding: iso-8859-1 -*-
2
3 """
4 Tests session state.
5 """
6
7 Dependencies = ['time']
8
9 def execute(macro, args):
10 if macro.request.session.is_new:
11 return macro.formatter.text('Not storing any state until you send a cookie.')
12 if 'test' in macro.request.session:
13 return macro.formatter.text("Loaded value %d" % macro.request.session['test'])
14 import random
15 value = random.randint(1, 100000)
16 macro.request.session['test'] = value
17 return macro.formatter.text("Set to value %d" % value)