我正在尋找類似的解決方案。我使用bottle-cork.py我的用戶認證,需要一種方式讓用戶選擇「保存我登錄」
from bottle, import request, response # etc...
def post_get(name, default=''):
return bottle.request.POST.get(name, default).strip()
def login():
"""Authenticate users"""
username = post_get('username').lower()
password = post_get('password')
keep_login = post_get('keep_login')
session = request.environ['beaker.session']
if keep_login == 'true':
session.cookie_expires = False
response.set_cookie('keep_login', "true")
else:
session.cookie_expires = True
response.set_cookie('keep_login', "false")
aaa.login(username, password)
然而,每一個請求被髮送到服務器時,瓶返回新的會話cookie,默認會在瀏覽器關閉時恢復過期。爲了解決這個問題,我補充說,我呼籲每一個請求發送時間的函數:
def preserve_cookie(request):
keep_login = request.get_cookie('keep_login')
session = request.environ['beaker.session']
if keep_login == 'true':
session.cookie_expires = False
return request
所以,舉例來說:
@bottle.get('/get_username')
def check_login(user=None):
try:
aaa.require(username=user)
except:
raise bottle.HTTPError(401)
preserve_cookie(request)
return aaa.current_user.username
這種方式返回的新的cookie保存用戶的偏好保持登錄會話保存。然而,方式beaker.SessionMiddleware目前正在實施,它只是將cookie設置爲2038年1月18日過期。
您是否在問如何更改會話cookie的到期?如果是這樣,你需要告訴我你正在使用的會話工廠。 – 2012-01-04 22:55:47
'pyramid_beaker.session_factory_from_settings'和'session.type = cookie' – 2012-01-04 23:01:03
燒杯的cookie默認爲永不過期,所以也許你正在調試錯誤的東西? – 2012-01-04 23:04:36