×

注意!页面内容来自https://www.vigor.nz/HelpOnSessions,本站不储存任何内容,为了更好的阅读体验进行在线解析,若有广告出现,请及时反馈。若您觉得侵犯了您的利益,请通知我们进行删除,然后访问 原网页

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:

cookie_name

None

Part of the session cookie name. None means to create the name from some url parts'siteidmagic' means use cfg.siteid (name of config file) anything else will be just used as is.

cookie_domain

None

Domain used in the session cookie.

cookie_lifetime

(0, 12)

Cookie lifetime in hourscan be fractional. First tuple element is for anonymous sessionssecond tuple element is for logged-in sessions. For anonymous sessionst=0 means that they are disabledt>0 means that many hours. For logged-in sessionst>0 means that many hoursor 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=0it disables logged-in sessions.

Single wiki

Likely the only interesting item is cookie_lifetime.

Multiple separate wikis under same domainall using wikiconfig (not farmconfig)

The default cookie_name = None creates a different cookie name and separate sessions for each wiki.

If you want separate sessions for your wikisyou can't use cookie_name = 'siteidmagic' because that always would set the name to MOIN_SESSION_wikiconfig. So either explicitly set a unique cookie_name for each wiki or use cookie_name = None.

Wiki farmhost based farming

E.g. wiki1.example.org and wiki2.example.org.

If you like shared sessionsshared user profilesuse this in your farmconfig:

   1     cookie_domain = '.example.org' # cookie domain matches for all wikis
   2     cookie_name = 'myfarm' # cookie name is same for all wikis
   3     session_dir = '/same_session_dir' # use same storage for session files
   4     user_dir = '/same_user_dir' # use same storage for user profiles

Wiki farmpath based farming

E.g. example.org/wiki1 and example.org/wiki2.

If you like shared sessionsshared user profilesuse this in your farmconfig:

   1     cookie_name = 'myfarm' # cookie name is same for all wikis
   2     session_dir = '/same_session_dir' # use same storage for session files
   3     user_dir = '/same_user_dir' # use same storage for user profiles

Wiki farmport based farming

E.g. example.org:8000 and example.org:8001.

If you like shared sessionsshared user profilesuse this in your farmconfig:

   1     cookie_name = 'myfarm' # cookie name is same for all wikis
   2     session_dir = '/same_session_dir' # use same storage for session files
   3     user_dir = '/same_user_dir' # use same storage for user profiles

Session example code

As an extension programmerin order to use session variablesyou can use request.session like a dictvalues 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 -*-
   2 
   3 """
   4     Tests session state.
   5 """
   6 
   7 Dependencies = ['time']
   8 
   9 def execute(macroargs):
  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(1100000)
  16     macro.request.session['test'] = value
  17     return macro.formatter.text("Set to value %d" % value)