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和会话管理相关推荐

  1. 跟着王进老师学开发Python篇:基础强化案例讲解-王进-专题视频课程

    跟着王进老师学开发Python篇:基础强化案例讲解-143人已学习 课程介绍         共计27个项目案例+项目源码,跟着王进老师尽情玩转Python解释器! 案例涵盖的内容有:Python程序 ...

  2. 跟着王进老师学开发Python篇第五季:面向对象篇-王进-专题视频课程

    跟着王进老师学开发Python篇第五季:面向对象篇-422人已学习 课程介绍         课程从0开始,讲到人工智能:按阶段授课,从入门到跑路: 适合无基础的小白,也适合定制,需要哪个模块学哪个模 ...

  3. 跟着王进老师学开发Python篇:基础入门案例讲解-王进-专题视频课程

    跟着王进老师学开发Python篇:基础入门案例讲解-166人已学习 课程介绍         共计45个项目案例+项目源码,跟着王进老师尽情玩转Python解释器! 本课程涉及Python的基础语法, ...

  4. 视频教程-跟着王进老师学开发Python篇:基础入门案例讲解-Python

    跟着王进老师学开发Python篇:基础入门案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥ ...

  5. 基于WebMatrix的轻量级Web开发系列课程

    基于WebMatrix的轻量级Web开发系列课程(10): WebMatrix与ASP.NET MVC WebMatrix除了提供了默认的编程模型以外,也对ASP.NET MVC做出了很好的支持,但是 ...

  6. 基于滴答清单 Web 开发的 PC 客户端

    基于滴答清单 Web 开发的 PC 客户端 关于「滴答清单」 滴答清单是一款不可多得的 GTD 效率工具,它有着清晰明了的界面设计.恰到好处的功能设置.稳定的同步服务,如果你还缺少一款简洁而有效的 G ...

  7. 跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-王进-专题视频课程

    跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-465人已学习 课程介绍         本季课程为Tkinter GUI项目实战:学生信息管理系统, 内容包含:项目总体介绍 ...

  8. 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程

    跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍         本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...

  9. python web开发-Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

最新文章

  1. 清华大学校内智能车竞赛辅导资料
  2. 低内阻的MOS管 4N04R7
  3. 神策数据、阿里、华为、字节等携手推动个人信息保护工作
  4. 多种缺陷管理软件简介
  5. Android 对话框(Dialog)大全 建立你自己的对话框
  6. VueX的store的简单使用心结
  7. 20160205.CCPP体系详解(0015天)
  8. js判断软键盘是否开启弹出
  9. PAT甲级题解-1100. Mars Numbers (20)-字符串处理
  10. 从相册获取图片,并获取裁剪后图片(系统自带)
  11. 用集合编写的java通讯录_java使用集合实现通讯录功能
  12. k3B软件下载_优麒麟20.10发布:简约、众智、兼容Windows有戏_办公软件
  13. wacom linux 驱动下载,Ubuntu 8.04如何安装WACOM驱动
  14. java计算矩形_用Java实现计算矩形的面积与周长
  15. 神经网络占用内存(显存)的计算
  16. Adobe Photoshop 2021 22.1.1.138中文版(win/mac)
  17. python vba 审计_审计工作中有哪些 Excel VBA 的应用?
  18. 免费的 AI 动作捕捉工具 #Rokoko Video
  19. matlab生成特定矩阵
  20. ! LaTeX Error: File xxx.sty not found-统一解决办法

热门文章

  1. oracle insert into values select from,ORACLE语法中的INSERT INTO。。。SELECT。。。 收藏
  2. 主线程 唤醒_python线程之九:生产者消费者3种方式,2个线程1个协程
  3. python--学习笔记6 pandas
  4. 搜索技巧——持续更新
  5. jfinal文件上传
  6. Sharepoint学习笔记---Linq to Sharepoint--查询语法
  7. [转]JS日期选择控件
  8. c#中使用消息循环机制发送接收字符串的方法和数据类型转换
  9. 最小二乘法C#实现,简单代码
  10. CPU,寄存器,内存三者的关系