Flask

2013-11-04 28 views
11

'da bir çerez için son kullanma süresini sıfırlama Python web çerçevesi Flask kullanıyorum. Uygulamamdaki oturumları kullanıyorum. Benim app main, ben main.permanent_session_lifetime = timedelta(days=5) ayarı var, böylece bir kullanıcı giriş yaptıktan sonra 5 gün boyunca oturum açık kalacaktır. Ancak etkin bir kullanıcı bile 5 gün sonra oturum açmış olacak. Son kullanma saatinin siteyi her ziyaret edişinde sıfırlanmasını isterim. Bu nedenle, yalnızca hareketsizliğinden'un 5 gününden sonra çıkış yapmanız gerekir. Çoğu site bu şekilde çalışır. Bunu Flask ile nasıl yapabilirim?Flask

+1

Flask böyle bir şey kendiniz yazmak için size araçlar vermeye çalışır. "Etkinlik" tanımlamanız web sitesine bağımlıdır. Siteyi ziyaret eden "etkinlik" veya bir ürünü satın almak gibi bir şey var mı? Gördüğünüz gibi, "hareketsizlik" gibi bir seçenek olamazdı, bunu kendiniz uygulamak zorunda kalacaktınız. –

+0

Benim durumum için, etkinlik sadece siteyi ziyaret etmek demektir. Çerezin süresi dolmadan sitenin herhangi bir sayfasını ziyaret ederse, geçerlilik süresinin o tarihten itibaren 5 güne ertelenmesini isterim. –

cevap

18

Oturumunuzu, her istekte @before_request işleyicisini kullanarak istemciye yenileyebilirsiniz.

aşağıdaki deneyin:

@app.before_request 
def func(): 
    session.modified = True 
+0

Güzel çalışır. Aslında daha önce diğer nedenlerle 'app.before_request 'özelliğini istedim, bu yüzden bu bilmek harika. –

+0

Bu, sunucu tarafı oturumları (flask-kvsession) kullanılırken çalışmaz. Bunun nasıl tamir edileceğine dair fikri olan? – zengr

+2

@zengr, flask-kvsession'ın "Flask‘s imzalı çerez tabanlı oturum yönetimi için bir ikame yedeği" olduğunu söyleyen bir sorundur. İşini tamamen yapmıyor. Bir hata raporu gönderin. Bir geçici çözüm, '.regenerate()' yöntemini çağırmak olabilir. –