首页 > 代码库 > 第二百六十九节,Tornado框架-Session登录判断
第二百六十九节,Tornado框架-Session登录判断
Tornado框架-Session登录判断
Session需要结合cookie来实现
Session的理解
1、用户登录系统时,服务器端获取系统当前时间,进行nd5加密,得到加密后的密串
2、将密串作为一个字典的键,值为一个字典,也就是嵌套字典,键为密串的字典里保存用户信息
3、将这个密串当做cookie值写入浏览器
4、当用户访问时,判断值为密串的cookie是否存在,如果存在,获取cookie的值也就是密串,将这个密串在服务端的字典里查找是否存在,如果存在就可以拿到用户保存的各种信息,判断用户是否是登录状态
框架引擎
#!/usr/bin/env python #coding:utf-8 import tornado.ioloop import tornado.web #导入tornado模块下的web文件 container = {} #用户登录信息字典,保存着用户的登录信息,{‘328eb994f73b89c5f1de57742be1ee82‘: {‘is_login‘: True, ‘mim‘: ‘admin‘, ‘yhm‘: ‘admin‘}} class indexHandler(tornado.web.RequestHandler): #定义一个类,继承tornado.web下的RequestHandler类 def get(self): #get()方法,接收get方式请求 hq_cookie = self.get_cookie(‘xr_cookie‘) #获取浏览器cookie session = container.get(hq_cookie,None) #将获取到的cookie值作为下标,在数据字典里找到对应的用户信息字典 if not session: #判断用户信息不存在 self.redirect("/dlu") # 显示登录html文件 #跳转到登录页面 else: if session.get(‘is_login‘,None) == True: #否则判断用户信息字典里的下标is_login是否等于True self.render("index.html") # 显示index.html文件 #显示查看页面 else: self.redirect("/dlu") #跳转登录页面 class dluHandler(tornado.web.RequestHandler): def get(self): hq_cookie = self.get_cookie(‘xr_cookie‘) #获取浏览器cookie session = container.get(hq_cookie,None) #将获取到的cookie值作为下标,在数据字典里找到对应的用户信息字典 if not session: #判断用户信息不存在 self.render("dlu.html") # 显示登录html文件 #打开到登录页面 else: if session.get(‘is_login‘,None) == True: #否则判断用户信息字典里的下标is_login是否等于True self.redirect("/index") # 显示index.html文件 #跳转查看页面 else: self.redirect("/dlu") #跳转登录页面 def post(self): yhm = self.get_argument(‘yhm‘) #接收用户输入的登录账号 mim = self.get_argument(‘mim‘) #接收用户输入的登录密码 if yhm == ‘admin‘ and mim == ‘admin‘: #判断用户的密码和账号 import hashlib #导入md5加密模块 import time #导入时间模块 obj = hashlib.md5() #创建md5加密对象 obj.update(bytes(str(time.time()),encoding = "utf-8")) #获取系统当前时间,传入到md5加密对象里加密 suijishu = obj.hexdigest() #获取加密后的密串 container[suijishu] = {} #将密串作为下标到container字典里,创建一个新空字典 container[suijishu][‘yhm‘] = yhm #字典里的键为yhm,值为用户名 container[suijishu][‘mim‘] = mim #字典里的键为mim,值为用户密码 container[suijishu][‘is_login‘] = True #字典里的键为is_login,值为True self.set_cookie(‘xr_cookie‘,suijishu,expires_days=1) #将密串作为cookie值写入浏览器 self.redirect("/index") #跳转到查看页面 else: self.redirect("/dlu") settings = { #html文件归类配置,设置一个字典 "template_path":"views", #键为template_path固定的,值为要存放HTML的文件夹名称 "static_path":"statics", #键为static_path固定的,值为要存放js和css的文件夹名称 "cookie_secret":"61oETzKXQAGaYdkL5gEmGeJJY", } #路由映射 application = tornado.web.Application([ #创建一个变量等于tornado.web下的Application方法 (r"/index", indexHandler), #判断用户请求路径后缀是否匹配字符串index,如果匹配执行MainHandler方法 (r"/dlu", dluHandler), ],**settings) #将html文件归类配置字典,写在路由映射的第二个参数里 if __name__ == "__main__": #内部socket运行起来 application.listen(8888) #设置端口 tornado.ioloop.IOLoop.instance().start()
第二百六十九节,Tornado框架-Session登录判断
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。