python+Django(6)—cookie&session字段

背景

最近在编写一个django课程教务系统,涉及到多页面带登录态的相互跳转,故记录哈实战过程中一些收获。

实战收获

利用cookie字段判断用户是否已经登录

1.http协议本身是"无状态"的,服务器需要借助于cookie和session字段来记录客户端的访问状态,即保持登录态

2.cookie是将一段文本保存在客户端(浏览器或本地电脑)的一种技术,可长时间保存。用户首次通过客户端访问服务器时,服务器会给客户端发送一小段信息,客户端需要将这段信息以cookie的形式保存在本地某个目录的文件内。

3.cookie的缺点在于不可靠和不安全:

1)浏览器可能不会保存服务器的cookie(依用户习惯选择)

2)cookie是有生命周期的(通过Expire设置)

3)http数据是明文发送,容易受到攻击,不能存放敏感数据;而且由于cookie是存放在文件中,可随便修改

js代码:

$.get(url, {'username': username, 'password':password}, function(data){

var data=JSON.parse(data);

if (data.errorCode==0){                                                                   

location.href= "{% url 'Mypage:homepage' %}"                                             //后端完成用户名和密码校验无误后,重定向到homepage主页               

}

else{

alert(data.errorsList);                                                                                    //后端校验用户名或者密码有误,直接弹窗提示错误信息

}

})

views.py代码【设置cookie】

response.set_cookie("username", username)                                               //设置cookie字段

username = request.COOKIES.get('username')                                           //获取cookie,获取用户发来请求中的cookie字段

利用session字段判断用户是否已经登录

session功能与应用场景与cookie类似,但由于数据是存储在服务器上,会比cookie安全,就算用户关闭了浏览器,session依旧可以保持到会话过期。

Session工作的流程如下:

1)客户端向服务器发送请求时,看本地是否有cookie文件。如果有,就在HTTP的请求头(Request Headers)中,包含一行cookie信息

2)服务器接收到请求后,根据cookie信息,得到sessionId,根据sessionId找到对应的session,用这个session就能判断出用户是否登录

js代码:

$.get(url, {'username': username, 'password':password}, function(data){

var data=JSON.parse(data);

if (data.errorCode==0){                                                                   

location.href= "{% url 'Mypage:homepage' %}"                                             //后端完成用户名和密码校验无误后,重定向到homepage主页               

}

else{

alert(data.errorsList);                                                                                    //后端校验用户名或者密码有误,直接弹窗提示错误信息

}

})

views.py代码【设置session】

request.session['is_login'] ='true'

request.session['username'] = username                                                      //将username写入session,存入服务器

username = request.session.get('username')                                                //获取session中username

ps.链接重定向可用response = HttpResponseRedirect('/user/index/')

你可能感兴趣的:(python+Django(6)—cookie&session字段)