Django login()函数

功能:

根据用户信息,生成sessionid,这个sessionid是必须保存在数据库当中的,因为需要在用户登陆后,查询session,取出用户基本信息(session_data)。
但要注意,这个键值对是放在域名之下的,比如你登录百度,就会放在百度域名之下。

django session

django session中的内容

session_key:服务器返回给用户的sessionid
session_data:一段加密的文字,把用户的信息生成一段经过加密的字符串。
expire_date:session过期时间
登录网站审查元素,找到cookie查看sessionid
浏览器审查元素,查看sessionid

可以在浏览器中看到sessionid就是数据库中存储的session_key

那么是如何把seesionid转换成user的?

是因为在setting.py中有个配置,如下图:在INSTALLED_APPS中有一个'django.contrib.sessions'APP,这个APP是会对每次request和response请求做拦截,拦截到浏览器过来的request的时候,就会在里面找到sessionid,找到sessionid之后,通过查询数据库,找到session_data,对数据进行解密,便可以直接把user取出来。
如果注释掉'django.contrib.sessions',自动登录就会失效。


django.contrib.sessions

总结

Session是服务器生成的,存储在服务器端的。
1、服务器第一次响应浏览器请求时,会生成一个sessionid,返回给浏览器;
2、浏览器再次请求时,会带上cookie中的sessionid,服务器通过查询seesionid,在数据库中查询是哪个用户,取出信息,返回给浏览器;
3、Django就通过cookie和session机制完成了自动登录
Cookie是保存在浏览器本地的。
Cookie有一个不安全性。因为不能把用户所有信息存在本地,一旦被别人窃取,就会知道用户的账号密码,这样不安全。

你可能感兴趣的:(Django login()函数)