python关闭浏览器删除session_Python Flask,cookie,session ,设置、获取、删除

app.secret_key = 'sth. random as a encrypt key.'

# coding:utf-8

from flask importFlask, make_response, request

app = Flask(__name__)

# 设置cookie

@app.route("/set_cookie")

defset_cookie():

resp = make_response("success") # "success"是响应体

# 设置cookie, 默认有效期是临时cookie,浏览器关闭就失效

resp.set_cookie("Name", "Python")

# max_age设置有效期,单位:秒

resp.set_cookie("Name2", "Python1", max_age=3600)

# 设置cookie其实就是通过设置响应头实现的。

# resp.headers["Set-Cookie"] = "Name3=Python3; Expires=Sat, 18-Nov-2017 04:36:04 GMT; Max-Age=3600; Path=/"

returnresp

# 获取cookie

@app.route("/get_cookie")

defget_cookie():

c = request.cookies.get("Name")

returnc

# 删除cookie

@app.route("/delete_cookie")

defdelete_cookie():

resp = make_response("del success")

# 删除cookie

resp.delete_cookie("Name1")

returnresp

if __name__ == '__main__':

app.run(debug=True)

一、了解概念

http请求无状态

在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户。

cookie

cookie的出现就是为了解决这个问题,cookie本质是一种存储机制,为了存储用户相关的信息。

第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户是哪个了。

第一次访问后,浏览器会自动保存服务器发过来的cookie数据,以便再次请求这个网站时让服务器"记住"用户!

cookie特性

cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4KB。因此使用cookie只能存储一些小量的数据。

cookie有有效期:服务器可以设置cookie的有效期,以后浏览器会自动的清除过期的cookie。

cookie有域名的概念:只有访问同一个域名,才会把之前相同域名返回的cookie携带给服务器。也就是说,访问谷歌的时候,不会把百度的cookie发送给谷歌。

session

我们不可能把用户的个人信息直接存储到cookie中,那样太不安全了! 为了解决这种问题,session就诞生了~

不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。总之,它是为了解决cookie存储数据不安全的问题的。

Flask中的session机制是将session信息加密,然后存储在cookie中!!!!

session与cookie

session是一个设计思想,通常和cookie结合使用。有session存储在服务器端和session存储到客户端两种方案。Flask中的session机制是将session信息加密,然后存储在cookie中!!!!

关于cookie和session,就比如,你预定了一个旅店房间,首先你会得到一个凭证(cookie)。那天,你带着你的凭证(cookie)去旅店入住,旅店(服务器)老板先要拿着你的凭证(cookie)去核对信息(client side session),通过session信息找到你的预定房间,确认你的信息然后才能允许你入住,你可以在旅店(服务器)里搞一些事情。当某一天你的房间期限到了(session失效时),也就不能入住了。

二、具体操作

flask中操作cookie

通过response对象来操作,可以在response返回之前,通过response.set_cookie来设置。通过键值对来读写cookie,具体参数可以查看函数原型。下面是示例代码

from flask importFlask,Response,request#目的:练习cookie的使用

app= Flask(__name__) #实例化一个app

#用户通过服务器get cookie的值(通过浏览器存储到本地)

@app.route("/get_cookie")defget_cookie():

reps= Response("获取cookie!!!")

reps.set_cookie('username','hinzer')returnreps#请求服务器删除cookie

@app.route("/del_cookie")defdel_cookie():

reps= Response("删除cookie!!!")

reps.delete_cookie("username")returnreps#请求查询存储在cookie的用户信息

@app.route("/")defindex():

username= request.cookies.get("username")ifusername:returnusernameelse:return u"没有获取到cookie"

if __name__ == '__main__':

app.run()

通过浏览器来验证

flask操作session:

session是存储在服务器端的,操作与cookie类似。在flask中通过将session加密,然后存储到cookie中,保存到浏览器、看代码

from flask importFlask,sessionimportosfrom datetime importtimedelta#目的:练习session的操作

app= Flask(__name__)

app.config['SECRET_KEY'] = os.urandom(24) #使用一组随机数对session进行加密

app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=2) #修改session 过期时间 --> session.permanent = True

#用户请求设置session

@app.route('/get_session/')defget_session():

session['username'] = 'hinzer'session['user_id'] = '123'

#permanent:持久化(默认过期时间是31天)

session.permanent =True#print(type(session))

return '设置session!'

#用户请求清除session

@app.route('/del_session/')defdelete_session():

session.clear()return '清除session'

#用户请求查询session

@app.route('/')defindex():

username= session.get('username')

user_id= session.get('user_id')print(user_id)return username or '没有session'

if __name__ == '__main__':

app.run()

PS:由于http的请求无状态,我们可以通过程序上下文(临时存储对象),来保证一些重要的信息。比如session的key值,方便我们在程序中查询和处理。之后有机会会详细介绍一下、、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值