向后台提交数据:利用cookie加session提交更多数据,
Posted wenxianfeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向后台提交数据:利用cookie加session提交更多数据,相关的知识,希望对你有一定的参考价值。
个人逻辑,可能考虑不全面,各位看到后留言,我修改啊
实现效果:浏览器第一次访问提交用户名,后台验证通过,生成随机字符串,和用户名组成字典,保存到服务器,把随机字符串设置成cookie发给浏览器,同一个浏览器第二次来访问这个服务器上的其他页面时候,获取携带的cookie的随机字符串判断在字典,把用户信息前台展示否则跳到其他页面或提示浏览器cookie没设置
代码如下:
#!/usr/bin/env python #-*- coding:utf-8 -*- import tornado.web import tornado.ioloop dic = {} class LoginHandler(tornado.web.RequestHandler): # 如果前台提交的用户是对的,生成随机字符串,根据随机字符串构建空字典,让随机字符串做key,用户信息做新字典的信息。最后把随机字符串给cookie返回给浏览器 # 如果用户不对,提示验证不通过 def get(self, *args, **kwargs): if self.get_argument(‘u‘) in [‘zhangsan‘,‘lisi‘]: #根据不同的时间利用md5生成不同的字符串 import hashlib import time obj = hashlib.md5() obj.update(bytes(str(time.time()),encoding=‘utf-8‘)) random_str = obj.hexdigest() #根据随机字符串构建空字典,让随机字符串做key,用户信息做新字典的信息 dic[random_str] = {} dic[random_str][‘is_login‘] = True dic[random_str][‘user‘] = self.get_argument(‘u‘) # print(dic) #随机字符串设置到浏览器里,供下载浏览器访问其他页面携带 self.set_cookie(‘cookie‘,random_str) else: # 如果用户不对提示验证不通过 self.write(‘验证不通过‘) class ManagerHandler(tornado.web.RequestHandler): # 获取浏览器携带的cookie的value,看携带的这个value即随机字符串是否在字典dic,要是在,并且is_login的value是True,前端显示用户名,否则跳到login页面 def get(self, *args, **kwargs): # 获取浏览器携带的cookie的value cc = self.get_cookie(‘cookie‘) #看携带的这个value即随机字符串是否在字典dic,要是在,并且is_login的value是True,前端显示用户名,否则跳到login页面 print(cc) new_random = dic.get(cc,None) print(new_random) if not new_random: self.redirect(‘/login‘) else: if new_random[‘is_login‘]: self.write(new_random[‘user‘]) # else: # self.redirect(‘/login‘) setting = { ‘cookie_secret‘:‘eeee‘ } app = tornado.web.Application([(r‘/login‘,LoginHandler), (r‘/manager‘,ManagerHandler), ],**setting) if __name__ == ‘__main__‘: app.listen(‘8000‘) tornado.ioloop.IOLoop.instance().start()
以上是关于向后台提交数据:利用cookie加session提交更多数据,的主要内容,如果未能解决你的问题,请参考以下文章
Web框架之Django_08 重要组件(form组件cookie和session组件)