首页 > 其他 > 详细

(27)session(设置值、取值、修改、删除)

时间:2019-03-19 15:52:28      阅读:307      评论:0      收藏:0      [点我收藏+]

session的由来

Cookie虽然在一定程度上解决了“保持状态”的需求,但是由于Cookie本身最大支持4096字节,以及Cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是Session。

问题来了,基于HTTP协议的无状态特征,服务器根本就不知道访问者是“谁”。那么上述的Cookie就起到桥接的作用。

我们可以给每个客户端的Cookie分配一个唯一的id,这样用户在访问时,通过Cookie,服务器就知道来的人是“谁”。然后我们再根据不同的Cookie的id,在服务器上保存一段时间的私密资料,如“账号密码”等等。

总结而言:Cookie弥补了HTTP无状态的不足,让服务器知道来的人是“谁”;但是Cookie以文本的形式保存在本地,自身安全性较差;所以我们就通过Cookie识别不同的用户,对应的在Session里保存私密的信息以及超过4096字节的文本。

另外,上述所说的Cookie和Session其实是共通性的东西,不限于语言和框架。

 

技术分享图片

生成的随机session随机字符存在数据库的django_session表中

技术分享图片

session实例

urls.py


from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r‘^admin/‘, admin.site.urls),
url(r‘^get_session/$‘,views.get_session),
url(r‘^set_session/$‘,views.set_session),
url(r‘^set_session2/$‘,views.set_session2),
url(r‘^del_session/$‘,views.del_session)
]

views.py

from django.shortcuts import render,HttpResponse,redirect
from app01 import models

def set_session(request):
‘‘‘设置和生成session‘‘‘
‘‘‘这个一句代码在后台做了一系列动作
1、生成一个随机字符串,一个浏览器是一个随机字符串,就是如果一个人用多个浏览器,则会在数据库的表中生成多个session的随机字符串
2、把随机字符串作为cookie的值写入浏览器 session:asdwerdase
3、把{name:lqz}写入数据库,在数据库的django_session表中
‘‘‘
request.session[‘name‘] = ‘lqz‘
return HttpResponse(‘设置成功1‘)

def set_session2(request):
‘‘‘再次设置session‘‘‘
request.session[‘name‘] = ‘lqz‘
# 如果先前设置过一次session,然后再设置一次,程序会朝数据库session的值中添加新的值,再次设置只会更新session中的值
request.session[‘age‘] = 19
request.session[‘pwd‘] = ‘123‘
return HttpResponse(‘设置成功2‘)


def get_session(request):
‘‘‘从session中取值‘‘‘
# 这一句代码在后台做了一系列动作,先从cookie中取出session的字符串,然后根据取得的session字符串从数据库中查询session_key下对应的session字符串,把加密的数据反解(数据是以字典的形式,去字典中取出需要的值)
name = request.session.get(‘name‘)
age = request.session.get(‘age‘)
pwd = request.session.get(‘pwd‘)
print(name,‘+‘,age,‘+‘,pwd)
return HttpResponse(‘获取session成功‘)

def del_session(request):
‘‘‘删除session‘‘‘
request.session.delete() #只删数据库,也可以达成登陆状态失效,因为数据库内匹配不到了
# request.session.flush() #数据库和cookie都删,达成登陆状态失效
return HttpResponse(‘删除成功‘)

def modify_session(request):
‘‘‘修改session,cookies的修改同理‘‘‘
request.session[‘age‘] = 19 #直接赋值即可

 

(27)session(设置值、取值、修改、删除)

原文:https://www.cnblogs.com/shizhengquan/p/10559008.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!