我有一种习惯,在碰见没有处理过的问题时,第一时间就去搜索解决方案。
毫不费劲,一切顺利,互联网改变了我的工作方式,改变了我的思维方式,思考变成了笑话。
今天我倒是想来推敲推敲。
自动登录,也就是为了方便用户,而产生的免登录功能。
许多web邮箱都有一个两周内自动登录选项,选择了它,每次再访问邮箱主页时,便会自动完成登录,跳转到用户主页面。
好坏搞web开发有两年,大概知道要用cookie实现,剩下的只是一个个问号?
cookie怎么来?
怎么让他只在两周内自动登录?
浏览器禁止cookie后是否此功能就失效?
在一个浏览器中选择了自动登录,是否对其它浏览器也生效?
从我的问题中就能看出,即使搞web开发两年,但对http协议可说知之甚少,或说根本不知道,但我确实是做了两年web开发了。虽说对http协议不了解,但当时想像功能实现时第一时间就想到了cookie,现在看来这预感还对了。。。
因为这个功能并不着急实现,所以我还有时间思考,我也专门去了解了一下http协议。
之前对他的认识就是一个名词,web开发与他有关,具体到什么关系,我想是远房亲戚的关系,知道有这么一个人,但对他还没有邻居了解。
这中间经历了很长时间,有两三个月的样子,什么两三个月?
确实是两三个月,并不是这http协议有多难,而是经常忘记我还要去了解http协议,而把时间用在了去关心A女与B女为什么会同时恋上C男,这问题很奇妙,我苦思冥想......
然而现在却对http有了新的认识。
http协议是规定浏览器与Web容器之间交互的准则。
即浏览器请求一张图片,要告诉web容器是哪一张。
申请一个账号,要怎样拼接传递字符串web容器才不会把用户名当成了密码。
从服务器下载东西,哪些可以缓存起来,不必每次都来请求。
上传图片时,数据格式需要有什么改变。
而编程语言则是把变化的业务逻辑转变成不变的数据格式交给容器与浏览器去交互。
分工是明确了,在不知http协议的情况下一样开发得出来web程序,只是知其然不知其所以然。
说了半天下面终于说到实现了。
一开始我认为就是在用户选择了自动登录后提交,服务端把用户帐号与密码md5加密后写入cookie,并设置对应过期时间,
下次用户再次访问网站时就会携带这个值,当服务端发现有此cookie时就进行验证,验证成功接下来就完成登录操作。
后来想了想,只要非本用户获得了这个cookie字符串,就可以一直登录,(当然用户自身也是一样的,只要稍观察cookie的变化)并一直到用户修改密码为止,而不是cookie过期。
这样应该不好,于是又想了一种方法
为了安全,不准备把用户名与密码作为验证,而是当选择自动登录时生成一个随机字符串写入cookie,
当用户名与随机字符串对应上了就自动登录,什么时候取消呢?就在用户手动点击了页面中的退出按钮后清除随机串,重写对应cookie值为空,且设置cookie值为浏览器关闭即失效。
这个要新建一张表,分别对应用户名,随机字符串
user_id,ran_str
完了,这就是最后想出来的方法。
分享到:
相关推荐
这篇博客文章“TT随笔三 前台公共功能猜想”可能探讨了在Web应用开发中,如何设计和实现前台公共功能的策略和思路。在Web应用的前端部分,公共功能通常指的是那些多个页面或模块共享的组件、服务或者交互逻辑,比如...
“ web-view是一个可以用来承载网页的容器,会自动铺满整个小程序页面”,也就是说,微信小程序中可以直接运行web页了。大胆猜想,这一功能,可能直接导致小程序数量增长迎来一波高峰。毕竟磨刀霍霍却一直资源不足...
它在WebSocket之上提供了一层抽象,使得在Web应用中实现实时通信变得简单。在实时绘图游戏中,Socket.IO被用来实现实时数据传输,例如玩家的动作(如绘制线条)可以立即同步到所有在线玩家,确保游戏的即时性。 3. ...
0005 设置窗口的自动隐藏功能 3 0006 根据需要创建所需解决方案 4 0007 如何使用“验证的目标架构”功能 4 1.2 Visual Studio开发环境的使用 4 0008 为程序设置版本和帮助信息 4 0009 设置Windows...
描述 "基于ASP的仿google猜想搜索" 表明开发者使用了ASP技术来实现类似于Google的搜索预测功能。在ASP中,开发者通常会结合HTML、CSS和JavaScript等前端技术,以及VBScript或JScript等后端脚本语言,来处理用户请求...
的值 52 <br>0069 求最大公约数 52 <br>0070 求最小公倍数 53 <br>0071 判断素数的算法 53 <br>0072 如何判断一个数是否是完数 54 <br>0073 歌德巴赫猜想的算法 54 <br>0074 八皇后...
0067 如何实现哥德巴赫猜想 43 0068 如何实现韩信点兵 44 0069 求水仙花数的算法 44 0070 求1000以内的完数 45 0071 如何计算x的y次方 46 3.2 复杂计算类算法 46 0072 如何实现金额大小写转换的算法 ...
0067 如何实现哥德巴赫猜想 43 0068 如何实现韩信点兵 44 0069 求水仙花数的算法 44 0070 求1000以内的完数 45 0071 如何计算x的y次方 46 3.2 复杂计算类算法 46 0072 如何实现金额大小写转换的算法 ...
描述 "This is a hello world example" 确认了我们的猜想,即将探讨的是一个关于如何在 Python 中实现 "Hello World" 程序的基础教程。下面我们将深入探讨 Python 编程语言的基础知识,以及如何创建和运行一个简单的...
练习题中的例子如求阶乘之和、计算日期差、多维数组操作、输出特定图形、验证数学猜想等,都是通过控制语句实现的。 以上内容详细介绍了Java程序设计的一些基础概念和关键知识点,涵盖源程序结构、程序运行流程、...
10. **NPM scripts**:在`package.json`中定义的自动化任务,如启动、测试和部署命令。 这个项目可以作为一个学习资源,帮助开发者了解如何使用JavaScript和相关工具来构建一个实时的约会应用后端。通过阅读源代码...
- **上传漏洞猜想与组合攻击**:结合多种攻击手法,通过猜测可能存在的漏洞并尝试不同的组合,提高攻击的成功率。 ### 0x04 常见编辑器漏洞及利用总结 - **Ewebeditor编辑器**:分析该编辑器中存在的漏洞及其利用...
在"haven-rc"这个项目中,“rc”通常代表“Release Candidate”,意味着这是一个即将推出的稳定版本,可能经过...以上是对"haven-rc"项目的一些技术猜想,具体实现和特点需要通过查看源代码和阅读文档来进一步了解。
如果之后给变量赋的值类型改变了,JS引擎会自动调整变量的数据类型。值得注意的是,JS也允许省略`var`关键字,但这样做可能会导致变量成为全局变量,引发潜在的命名冲突问题。 JS的命名规则相当严格,不允许以数字...