#转载请留言联系

flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html

flask 框架基本使用(2):https://www.cnblogs.com/chichung/p/9761610.html

本文主要记录下在flask 框架下如何使用 cookie 与 session。

首先要明白几个概念。

  • 状态保持

因为 http 是一种无状态协议,浏览器请求服务器是无状态的。

无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。

无状态原因:浏览器与服务器是使用 socket 套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的 socket 连接,而且服务器也会在处理页面完毕之后销毁页面对象。

有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等

实现状态保持主要有两种方式:

在客户端存储信息使用Cookie

在服务器端存储信息使用Session

  • 会话

会话,英文“session”,表示从用户访问我们当前访问开始,一直到用户关闭浏览器这个过程,就是一次会话,表示用户与当前网站之间进行了一次会话。

会话的开始:用户第一次访问当前网站

会话的结束:用户关闭浏览器

会话跟踪,也叫状态保持,主要目的就是为了识别每一次访问到我们网站页面的用户的行为。

1. flask 框架下使用 cookie

  • cookie 是什么?

(1) cookie 指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地的数据(通常经过加密)。

(2) cookie 是由服务器端生成,发送给客户端浏览器,浏览器会将 cookie 的 key/value 保存,下次请求同一网站时就发送该cookie 给服务器(前提是浏览器设置为启用 cookie )。

(3) cookie 是存储在浏览器中的一段纯文本信息,建议不要存储敏感信息如密码,因为电脑上的浏览器可能被其它人使用。

(4) cookie 基于域名安全,不同域名的 cookie 是不能互相访问的。

(5) 当浏览器请求某网站时,会将本网站下所有 cookie 信息提交给服务器,所以在 request 中可以读取 cookie 信息

  • cookie的应用

(1)最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookie的功用。

(2)网站的广告推送,经常遇到访问某个网站时,会弹出小窗口,展示我们曾经在购物网站上看过的商品信息。(跨域)

from flask import Flask,make_response,request

app=Flask(__name__)

#设置cookie
@app.route("/login")
def login():
respond = make_response("登录成功")
respond.set_cookie("islogin","")
#此处可以设置时间,例如respond.set_cookie("username","chichung",10),
#表示10s后浏览器自动删除这个cookie,如果不设置时间就是管理浏览器时清除cookie
respond.set_cookie("username","chichung")
return respond #使用cookie
@app.route("/center")
def center():
if request.cookies.get("islogin") == "":
username = request.cookies.get("username")
return "%s的个人中心"%username
else:
return "没有登录" #删除cookie
@app.route("/logout")
def logout():
respond = make_response("登出成功")
#删除cookie,就是把cookie的有效期设置为0秒
respond.set_cookie("islogin","",0)
respond.set_cookie("username","",0)
# 设置cookie必须通过response返回,否则无法设置成功
return respond if __name__ == '__main__':
app.run(debug=True)

2. flask 框架下使用 session

  • session是什么?

session 依赖于 cookie ,原理与 cookie 基本类型,但是 session 是保存在服务端的。

对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息。

拓展:

上面的例子用 cookies 保存着登录状态与用户名,这是什么危险的。一旦遇到会一点JS的人用了你的电脑,document.cookie="islogin=1",document.cookie="username=你的用户名",就可以登录你的主页了。

from flask import Flask,session

app=Flask(__name__)
app.secret_key="hdjkewqhuirhqw4e3ibr5iu432y895&^*%(7680" #必须要写secret_key,内容可以乱填 #设置session
#session是保存在服务器中的,所以session本身的有效期就是会话期,即第一次请求到关闭浏览器这段期间
@app.route("/login")
def login():
session["islogin"]=""
session["username"]="chichung"
return "登录成功" #使用session
@app.route("/center")
def center():
if session.get("islogin") == "":
return "%s的个人中心"%session.get("username")
else:
return "没有登录" #删除session
@app.route("/logout")
def logout():
session["username"]=None
session["islogin"]=None
return "登出成功" if __name__ == '__main__':
app.run()

flask框架基本使用(3)(session与cookies)的更多相关文章

  1. Flask框架(五) —— session源码分析

    Flask框架(五) —— session源码分析 目录 session源码分析 1.请求来了,执行__call__方法 2.__call__方法 3.调用__call__方法 3.1.ctx = s ...

  2. Flask框架【七】—session组件详解

    一.flask session简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件缺点: 功能单一 session是保存 ...

  3. Flask 框架中 上下文基础理念,包括cookie,session存储方法,requset属性,current_app模块和g模块

    Flask中上下文,分为请求上下文和应用上下文.既状态留存 ,就是把变量存在某一个地方可以调用 请求上下文:实际就是request和session用法理念,既都是可以存储东西. 应用上下文:既变量共享 ...

  4. flask框架--cookie,session

    今天我又给大家分享一下怎么用flask框架来实现像淘宝购物车一样存储数据,并且把存储的数据删除,这个方法可以用两个方法都可以做成,一个是cookie,另一个是session. session是依赖于c ...

  5. 初识Flask框架,以及Flask中的模板语言jinjia2和Flask内置的Session

    一.web框架的对比 首先我们先来看下比较火的web框架 1.Django: 优点:大而全,所有组件都是组织内部开发高度定制化,教科书级别的框架 缺点:大到浪费资源,请求的时候需要的资源较高 2.Fl ...

  6. Flask框架(二)—— 反向解析、配置信息、路由系统、模板、请求响应、闪现、session

    Flask框架(二)—— 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 目录 反向解析.配置信息.路由系统.模板.请求响应.闪现.session 一.反向解析 1.什么是反向解析 ...

  7. Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析

    Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...

  8. Python自动化运维之30、Flask框架

    Flask 官网:http://flask.pocoo.org/ flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是 ...

  9. Flask框架

    FLask框架的简单介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

随机推荐

  1. Python locale 多语言模块和我遇到的坑

    Table of Contents 1. locale遇到的问题 1.1. locale 简介 1.1.1. 什么是locale 1.1.2. locale 相关命令 1.2. Python loca ...

  2. 20145202马超 《Java程序设计》 实验一 实验报告

    一.实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 二.实验内容 1.完成在Windows环境下对IDEA的配置: 2.实现求正整 ...

  3. anr trace文件分析

    测试给的trace文件好几万行,怎么看? 1.搜索 你的包名,看它报错误报在你代码的哪里 2.在你代码里面分析 还有,synchronized 就是用来防止多线程调用的,没有那么神奇.

  4. 6.bootstrap 将文本内容关联一个动作(手机端导航适配)&在超小尺寸下显示,屏幕变大后消失

    1.情景:这是出现在手机端导航适配的,点击文本MENU可以出现下拉的list 解决方法: 1.首先要想到,MENU只有两个状态,因此可以用checkbox实现 2.将MENU放在label标签里面,l ...

  5. erlang节点互通查看

    在局域网内部,一般用短节点名来完成短节点的全联通.     全联通的前提之一是cookie要相同,cookie记录在一个文件中.     对于同一个物理机上的两个erlang节点,不用其他配置就可以全 ...

  6. 一个python的文件对比脚本

    脚本主要用来给游戏客户端做热更的. 处理方式就是针对每个文件求其MD5值,再根据文件的目录和名字对比两个版本的MD5值,如果不一样,则这次热更就需要更新这个文件. 用法很简单. 1,生成MD5码列表 ...

  7. selenium fluentwait java实例

    本文转自:http://www.programcreek.com/java-api-examples/index.php?api=org.openqa.selenium.support.ui.Flue ...

  8. 使用puTTY或Xshell连接阿里云TimeOut超时

    根据网上很多主流的说法,我依次检查了 ssh: service sshd status 防火墙:service iptables stop (CentOS 7好像已经没有这个iptable了) 都没有 ...

  9. 抓取HTML网页数据

    (转)htmlparse filter使用 该类并不是一个通用的工具类,需要按自己的要求实现,这里只记录了Htmlparse.jar包的一些用法.仅此而已! 详细看这里:http://gundumw1 ...

  10. 软工实践Alpha冲刺(7/10)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 已经解决登录注册等基本功能的界面. 完成非功能的主界面制作 ...