惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
月光博客
月光博客
B
Blog RSS Feed
C
Check Point Blog
WordPress大学
WordPress大学
T
Tailwind CSS Blog
GbyAI
GbyAI
H
Help Net Security
Y
Y Combinator Blog
I
InfoQ
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
美团技术团队
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
A
About on SuperTechFans
G
Google Developers Blog
爱范儿
爱范儿
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
人人都是产品经理
人人都是产品经理

博客园 - Jason Cui

求助:SQL Server 2005数据库修复后无法收缩 Django:更简单的实现记住密码功能 用Bugols管理自己的项目 请教:为何Asp.net网站会自己弹出用户名密码输入框? 中文在线Bug管理系统 为什么要创建“理财易”? 继续招聘,请个好用的人可真难啊。 招聘两个Asp.net程序员 记账理财网站列表,用户自己挑一个用吧 坚持,究竟有多难? 又改了一次Django的源代码 请教,关于跨站提交的问题,和网站恶意抓取的防止 请教一个有关反射和缓存的高难度问题 诚聘:Asp.net高级技术人员两名 幸亏没有选择Ruby On Rails 关于委托的一次实践 Django运行环境配置 Django学习笔记 Python下的Lucene,PyLucene
修改了一下Django的源码
Jason Cui · 2006-12-01 · via 博客园 - Jason Cui

通常系统的要求,最简单的登录部分,通常都会有一个记住密码的功能,而像豆瓣这样的网站,会自动记住密码,并没有给用户选择的机会。不过一来它的丢失密码也不会造成太大的损失,二来我不知道它是不是使用了Django框架,所以不好说。但是以后如果他想做在线销售,这个问题是肯定要解决的。

在Django的实现里,由配置文件中的一个配置来决定是否启用记住密码功能,而且默认是启用的,如果改了这个配置,就变成浏览器生命周期的Cookie,但是这样的话,就没有办法做记住密码的功能了,只能在两者中间选一个。

后来考虑了网上的一篇文章,在Django的目录下,contrib/sessions/下面有个middleware.py,这就是session的实现过程。在它的processresponse里面,有一个判断,如果这个配置为浏览器生命周期,就会写一个expired为None的Cookie到客户端,否则,写一个过期时间为两周的Cookie。

为了最简化修改过程(因为它很快就会出1.0版本了,到时候恐怕又要改一次),做了一个偷懒的修改:直接在这里取session里面的'issaved'变量的值,如果是True,同样会保存两周的Cookie,否则,用默认情况。然后在用户登录的时候,如果用户选了这个框,就在session里面添加一个为True的这个变量,一切OK,只要改三行代码。不过麻烦的是每次更新django都要修改,而且每次迁移服务器环境也要改,忘记一次就麻烦了,这个记住密码就会失灵。