Flask中的session与cookie

Flask中的session与cookie

cookie: 客户端浏览器的缓存
session: 服务端服务器的缓存

1.session的概念

session和cookie的作用有点类似,都是为了存储用户相关的信息。而cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不一样,但是他们的目的都是服务器为了方便存储数据的。session的出现,是为了解决cookie存储数据不安全的问题的。
Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,
存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

session存储在服务器中:

服务器端可以采用mysql、redis、memcached等来存储session信息。原理是,客户端发送验证信息过来(比如用户名和密码),服务器验证成功后,把用户的相关信息存储到session中,然后随机生成一个唯一的session_id,再把这个session_id存储cookie中返回给浏览器。浏览器以后再请求我们服务器的时候,就会把这个session_id自动的发送给服务器,服务器再从cookie中提取session_id,然后从服务器的session容器中找到这个用户的相关信息。这样就可以达到安全识别用户的需求了。
在这里插入图片描述

session存储在客户端中:

客户端发送验证信息过来(比如用户名和密码)。服务器把相关的验证信息进行一个非常严格和安全的加密方式进行加密,然后再把这个加密后的信息存储到cookie,返回给浏览器。以后浏览器再请求服务器的时候,就会自动的把cookie发送给服务器,服务器拿到cookie后,就从cookie找到加密的那个session信息,然后也可以实现安全识别用户的需求了。
在这里插入图片描述

2.flask操作session

(1). 导入session
from flask import session
(2). 设置session_key
from flask import  Flask, session
import  random
app  = Flask(__name__)
app.config['SECRET_KEY'] =  random._urandom(24)
# 设置是24位的字符, 每次运行服务器的secret_key都是不同的,
# 服务器重启后会清除上一次存储的session信息值;
(3). 设置session值
@app.route('/')
def index():
    # 设置session的key-value值
    session['name'] = 'westos'
    return "hello world"
(4). 获取session值
@app.route('/get/')
def get():
    # 获取session的值
    return  session.get('name')
(5). 删除session值
@app.route('/delete/')
def delete():
    # 删除session的值
    print(session.get('name'))
    session.pop('name')
    print(session.get('name'))
    return  'delete'

猜你喜欢

转载自blog.csdn.net/weixin_41179709/article/details/83659627