您的位置:首页 > 编程语言 > Go语言

django.session-middleware

2015-10-29 11:03 288 查看





摘要 Http是无连接的,所以为了保持状态,会有cookie和session的研究。在django中是通过middleware的方法,实现的。

下面是django使用session的例子,参考djangoBook:

?
通过POST表单,提交username和password。

然后在Member模型中,查找是否匹配。若匹配,则对request.session看作字典赋值,就会建立起session。

下图是django session的处理流程:





我们主要看SessionMiddleware的实现:

?
这是SessionMiddleware的初始化。从settings模块中读取SESSION_ENGINE的值,默认是'django.contrib.sessions.backends.db',采用数据库存储。还可以设置别的值,比如'django.contrib.sessions.backends.file','django.contrib.sessions.backends.cache'等等。

下面是处理客户端请求:

?
cookie里面会存settings.SESSION_COOKIE_NAME(默认为'sessionid')的值。

取出cookie中的值,然后根据session_key获取相应的session_data值。

SessionSrore类是一个包装成字典的类,负责session_data的存储和修改。

在看看如何在response更新session的:

?
这里分几种情况讨论:

如果session被清除了,那么客户端的cookie也应该要清除。通过response.delete_cookie( )方法清除。

如果session被修改,并且没有500error, 就会跟新客户端的cookie,通过response.set_cookie( )方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: