基于hi-nginx的web开发(python篇)——cookie和会话管理
hi-nginx通过redis管理会话。
要开启管理,需要做三件事。
第一件开启userid:
userid on; userid_name SESSIONID; userid_domain localhost; userid_path /; userid_expires 300s;
这个功能是nginx内建的,可以直接使用。需要注意的是,hi-nginx只认识SESSIONID的userid_name。
第二件是配置redis服务器:
hi_redis_host 127.0.0.1; hi_redis_port 6379;
当然,你应该先安装redis并确保它运行。
第三件是在location段开启会话管理:
location / {hi_need_session on; hi_session_expires 300s; hi_python_script python/index.py; }
整个nginx配置写下来,就是:
1 server { 2 listen 8080; 3 server_name localhost; 4 5 userid on; 6 userid_name SESSIONID; 7 userid_domain localhost; 8 userid_path /; 9 userid_expires 300s; 10 11 hi_redis_host 127.0.0.1; 12 hi_redis_port 6379; 13 14 15 location / { 16 hi_need_cache off; 17 hi_cache_expires 5s; 18 19 hi_need_session on; 20 hi_session_expires 300s; 21 hi_python_script python/index.py; 22 } 23 }
需要注意是,应该确保hi_session_expires和userid_expires的值保持一致。
配置写完后,记得reload或者restart nginx。
接下来就是使用会话管理的api了。
说来太简单,都不好意思写出来,用req.has_session,req.get_session和res.session即可:
@app.route('^/session/?$',['GET']) def session(req,res,param):k='test'v=0if req.has_session(k):v=int(req.get_session(k))res.session(k,str(v+1))else:res.session(k,str(v))res.content('{}={}'.format(k,v))res.status(200)
那么,cookie怎么办?人们使用cookie的一大用途建立会话机制。上文已经把会话管理的使用说清楚了。所以使用hi.py框架时不需要特别留意cookie的管理。当然,如果你想自己管理cookie,hi-nginx也提供req.has_cookie和req.get_cookie两个只读api。如果要写api,可以使用res.header来写。比如:
在location段中添加hi_need_cookies on
1 location / { 2 hi_need_cache off; 3 hi_cache_expires 5s; 4 hi_need_cookies on; 5 hi_need_session on; 6 hi_session_expires 300s; 7 hi_python_script python/index.py; 8 }
在操作函数中在添加相关操作:
@app.route('^/session/?$',['GET']) def session(req,res,param):k='test'v=0if req.has_session(k):v=int(req.get_session(k))res.session(k,str(v+1))else:res.session(k,str(v))cv=vif req.has_cookie(k):cv=int(req.get_cookie(k))res.header('Set-Cookie','{}={};Path={};Domain={}'.format(k,cv+1,'/','localhost'))else:res.header('Set-Cookie','{}={};Path={};Domain={}'.format(k,cv,'/','localhost'))res.content('session:{0}={1},cookie:{0}={2}'.format(k,v,cv))res.status(200)
如上所见,在hi.py中操控和管理cookie和会话是非常方便的,用来写个登陆或者购物车什么的,配合hi.py的jinja2模板引擎,简直易如反掌。
转载于:https://www.cnblogs.com/hi-nginx/p/8667802.html
基于hi-nginx的web开发(python篇)——cookie和会话管理相关推荐
- 跟着王进老师学开发Python篇:基础强化案例讲解-王进-专题视频课程
跟着王进老师学开发Python篇:基础强化案例讲解-143人已学习 课程介绍 共计27个项目案例+项目源码,跟着王进老师尽情玩转Python解释器! 案例涵盖的内容有:Python程序 ...
- 跟着王进老师学开发Python篇第五季:面向对象篇-王进-专题视频课程
跟着王进老师学开发Python篇第五季:面向对象篇-422人已学习 课程介绍 课程从0开始,讲到人工智能:按阶段授课,从入门到跑路: 适合无基础的小白,也适合定制,需要哪个模块学哪个模 ...
- 跟着王进老师学开发Python篇:基础入门案例讲解-王进-专题视频课程
跟着王进老师学开发Python篇:基础入门案例讲解-166人已学习 课程介绍 共计45个项目案例+项目源码,跟着王进老师尽情玩转Python解释器! 本课程涉及Python的基础语法, ...
- 视频教程-跟着王进老师学开发Python篇:基础入门案例讲解-Python
跟着王进老师学开发Python篇:基础入门案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥ ...
- 基于WebMatrix的轻量级Web开发系列课程
基于WebMatrix的轻量级Web开发系列课程(10): WebMatrix与ASP.NET MVC WebMatrix除了提供了默认的编程模型以外,也对ASP.NET MVC做出了很好的支持,但是 ...
- 基于滴答清单 Web 开发的 PC 客户端
基于滴答清单 Web 开发的 PC 客户端 关于「滴答清单」 滴答清单是一款不可多得的 GTD 效率工具,它有着清晰明了的界面设计.恰到好处的功能设置.稳定的同步服务,如果你还缺少一款简洁而有效的 G ...
- 跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-王进-专题视频课程
跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-465人已学习 课程介绍 本季课程为Tkinter GUI项目实战:学生信息管理系统, 内容包含:项目总体介绍 ...
- 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程
跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍 本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...
- python web开发-Python Web开发从入门到精通
Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...
最新文章
- 清华大学校内智能车竞赛辅导资料
- 低内阻的MOS管 4N04R7
- 神策数据、阿里、华为、字节等携手推动个人信息保护工作
- 多种缺陷管理软件简介
- Android 对话框(Dialog)大全 建立你自己的对话框
- VueX的store的简单使用心结
- 20160205.CCPP体系详解(0015天)
- js判断软键盘是否开启弹出
- PAT甲级题解-1100. Mars Numbers (20)-字符串处理
- 从相册获取图片,并获取裁剪后图片(系统自带)
- 用集合编写的java通讯录_java使用集合实现通讯录功能
- k3B软件下载_优麒麟20.10发布:简约、众智、兼容Windows有戏_办公软件
- wacom linux 驱动下载,Ubuntu 8.04如何安装WACOM驱动
- java计算矩形_用Java实现计算矩形的面积与周长
- 神经网络占用内存(显存)的计算
- Adobe Photoshop 2021 22.1.1.138中文版(win/mac)
- python vba 审计_审计工作中有哪些 Excel VBA 的应用?
- 免费的 AI 动作捕捉工具 #Rokoko Video
- matlab生成特定矩阵
- ! LaTeX Error: File xxx.sty not found-统一解决办法
热门文章
- oracle insert into values select from,ORACLE语法中的INSERT INTO。。。SELECT。。。 收藏
- 主线程 唤醒_python线程之九:生产者消费者3种方式,2个线程1个协程
- python--学习笔记6 pandas
- 搜索技巧——持续更新
- jfinal文件上传
- Sharepoint学习笔记---Linq to Sharepoint--查询语法
- [转]JS日期选择控件
- c#中使用消息循环机制发送接收字符串的方法和数据类型转换
- 最小二乘法C#实现,简单代码
- CPU,寄存器,内存三者的关系