Tornado框架的用户认证和登录--session的应用(七)
2020-04-15 本文已影响0人
梦捷者
session的简单应用(要设置cookie_secret 签名防止进行伪造)
1、引入pycket库
- 在虚拟环境下进行安装
pip install pycket
pip install redis
- 在settings进行相应的配置
settings={
'pycket' : {
'engine': 'redis',
'storage': {
'host': 'localhost',
'port': 6379,
# 'password': '',
'db_sessions': 5, #redis db index
'db_notifications': 11,
'max_connections': 2 ** 30, #最大连接数2的30次方
},
'cookies': {
'expires_days': 30,
},
}
}
2、self.session的使用,主要有self.session.get 来获取, self.session.set 来设置
- 进行session的获取和设置(其他的都一样)
from pycket.session import SessionMixin
class BaseHandler(tornado.web.RequestHandler,SessionMixin):
def get_current_user(self):
# return self.get_secure_cookie("define_cookie")
return self.session.get('username_session')
class LoginHandler(BaseHandler):
def get(self):
next_url = self.get_argument('next', '/template')
if self.current_user:
print("此时的cookie键所对应的值为{}".format(self.current_user))
# self.render("8welcome.html", username=self.current_user)
self.redirect(next_url)
else:
self.render('7login.html', next_url=next_url)
def post(self):
next_url = self.get_argument('next_url', '/template')
username = self.get_argument("username")
password = self.get_argument("password")
if auth(username, password):
print(hash(password)
self.session.set("username_session", username)
self.write("Your cookie was not set yet!"+"在此之后就会被设置")
self.redirect(next_url)
else:
self.write("密码或者用户名出错,还有绝对不可以为空哦")
3、扩展知识
Cookie和Session的作用和工作原理 - CSDN博客
为什么要在密码里加点“盐” | Libuchao's blog