TZ:运动使人心情愉悦
一 : 科普一分钟
Cookie
可以翻译为“小甜品,小饼干” ,Cookie 在网络系统中几乎无处不在,当我们浏览以前访问过的网站时,网页中可能会出现 :你好 .xx,Cookie
其实是客户端记录用户行为的一个文件,形式通常是键值对的方式,大家可能有过这种经历,登录网站有的浏览器会提示,是否保存Cookie
,在这里与大家聊一聊在Django 框架下如何使用和操作小饼干.
二: Cookie以验证使用方法
- Django下使用
cookie
进行登录验证
登录页面对应函数
def login(request):
if request.method == 'GET':
return render(request,'login2.html')
if request.method == 'POST':
u = request.POST.get('username')
p = request.POST.get('pwd')
dic = user_info.get(u)
if not dic:
return render(request,'login2.html')
current_date = datetime.datetime.utcnow()
current_date = current_date + datetime.timedelta(seconds=10)
if dic['pwd'] == p:
res = redirect('/myapp/index')
# res.set_cookie('username',u,max_age=10)
#对cookie设置了超时时间和安全设置
res.set_cookie('username',u,expires=current_date,httponly=True)
# res.set_signed_cookie('username',u,salt="121221")
return res
else:
return render(request,'login2.html')
详情页面 如果cookie 验证通过则进入Index页面 否则刷新进入登录页面
def auth(func):
def inner(request,*args,**kwargs):
v = request.COOKIES.get('username')
if not v:
return redirect('/myapp/login')
return func(request,*args,**kwargs)
return inner
@auth
def index(request):
v = request.COOKIES.get('username')
return render(request,'index2.html',{'current_user':v})
三 : Session以及验证使用方法
-
Session的意义
对于Session 就是保存在后台数据或者缓存中的一个键值对,同样的存储着用户信息,为了更好的保护用户隐私,其实是对前端cookie的一个升级的保护措施. -
Session 的原理
当登录成功后,会向后台数据库 与 前端Cookie
同时发放一段随机字符串
,分别保存在后台的session中,前端 写到用户浏览器中,用户下次登录时候 拿着浏览器存着的sessionID
当做KEY
去后台数据库中匹配进行验证登录即可拿到用户相关信息,可以防止敏感信息直接暴露在浏览器上.
登录页逻辑
- Django下用Session 进行登录验证
ef sessionLogin(request):
if request.method == "GET":
return render(request,'sessionLogin.html')
elif request.method == "POST":
user = request.POST.get('user')
pwd = request.POST.get('pwd')
if user == 'root' and pwd =="123":
#生成随机字符串
#写到用户浏览器
#保存到session中
#在随机字符串对应的字典中设置相关内容...
request.session['username'] = user
request.session['is_login'] = True
if request.POST.get('rmb',None) == '1':
request.session.set_expiry(10)
return redirect('/myapp/sessionindex')
else:
return render(request, 'sessionLogin.html')
详情页逻辑
def sessionindex(request):
#获取当前用户的随机字符串
#根据随机字符串获取对应信息
if request.session.get('is_login',None):
return render(request,'sessionindex.html',{'username':request.session['username']})
else:
return HttpResponse('get out')
四 : 总结
综上粗浅的介绍了了 Cookie与Session在Django下的基本使用,在实际开发中我们还要在setting设置 Session存储的引擎等细节.
Session
是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie
是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
网友评论