1.pip install pycket
pip install redis
2.config

settings = dict(
debug=True,
template_path='templates',
static_path='static',
cookie_secret='secret',
pycket={
'engine': 'redis',
'storage': {
'host': 'localhost',
'port': 6379,
'db_sessions': 2,
# 'password': '',
'db_notifications': 11,
'max_connections': 2 ** 31,
},
'cookies': {
'expires_days': 30,
'max_age': 5000
}
},
)

3.构建BaseHandler
from pycket.session import SessionMixin
class BaseHandler(tornado.web.RequestHandler, SessionMixin):
def get_current_user(self):
return self.session.get('cookie_name')
4.需要设置一个条件去验证,比如要求用户登录。就在用户登录的handler中设置一个cookie信息

class LoginHandler(BaseHandler):
def get(self):
username = self.get_argument('username')
passwd = self.get_argument('password')
if username in db and passwd == db.passwd:
self.sesion.set('cookie_name', value)
self.write('success login')

5.其他handler需要继承basehandler才能够使用装饰起@tornado.web.authenticated去验证用户是否登录
class NoLoginNoShow(BaseHandler):
@tornado.web.authenticated
def get(self):
self.write('this message is secrect'
6.登出,可以通过self.session.delete('cookie_name')
本文介绍如何在Tornado框架中使用Pycket库进行会话管理,包括安装依赖库、配置设置、构建BaseHandler类、实现登录验证及登出功能。通过设置cookie和redis存储,实现用户登录状态的持久化。
1070

被折叠的 条评论
为什么被折叠?



