How sessions work in MoinMoin

Sessions in MoinMoin are implemented using a special session service that can be configured in cfg.session_service.

Code using the session framework currently includes:



Domain used in the session cookie.



Path used in the session cookie.


(0, 12)

Cookie lifetime in hours, can be fractional. First tuple element is for anonymous sessions, second tuple element is for logged-in sessions. For anonymous sessions, t=0 means that they are disabled, t>0 means that many hours. For logged-in sessions, t>0 means that many hours, or forever if user checked 'remember_me', t<0 means -t hours and ignore user 'remember_me' setting - you usually don't want to use t=0, it disables logged-in sessions.

(!) If you run a wiki farm and you want to share the session cookie between farm wikis, you want to change cookie_domain and/or cookie_path.

2. Session example code

As an extension programmer, in order to use session variables, you can use request.session like a dict, values stored there are automatically saved and restored if a session is available.

Here's an example macro using the session code:

   1 # -*- coding: iso-8859-1 -*-
   3 """
   4     Tests session state.
   5 """
   7 Dependencies = ['time']
   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) | Copyright (c) 2004-2022 czk.