A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-杨鹏立 高级黑马   /  2013-3-26 13:54  /  1430 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

当我们想在前台页面中做一个记住我的登录功能时,我们会想到两种方法去进行思考。

有时我们想要把用户信息放到客户端上会不会存在安全隐患,这样我们把信息放到服务器端有什么方法可以实现呢?那就只有session才能做到了。

也就是说存放信息有两种方式,一种是存在客户端,另一种就是存在服务器端。

我们先用排除法看看是否两种方法都可以在记住我这个功能上使用。

session:保存在服务器端。

当我们在登录页面中点击记住我,进行登录时,客户端和服务器端是通过http协议进行通讯,在服务器端会给我们注册一个session值,同时服务器端通过http协议向客户端输出一个sessionId,这样我们可以通过sessionid去实现记住我这个功能。但是在细想,session的值就算我们解决了过期时间,但他是和客户端的临时cooke配合着使用,存放在客户端的sessionid只是存在了浏览器当前应用程序中,一旦我们关闭了浏览器,该应用程序所占的内存即立即释放,也就是说sessionid丢失。下次在打开浏览器时,将得不到上一次sessionid的值,那么这样就不用在往下想怎样通过用户名及密码实现记住我的功能。



cooke:保存在客户端:
临时cookie:
持久cookie

临时cooke和持久cooke的区别就是设置一个过期时间,当不设置的时候,称为临时cooke,设置过期时间cooke即将保存在硬盘中:

通过cooke我想到了两种方法去实现他

第一种:

在用户表中加一个字段叫akey,当要写cookie时,生成一个guid(即不会重复,又让用户猜不到别人的akey),把这个guid写入用户的cookie中.
下次用户再来时,我们只检测有没有这个cookie,则证明以前有没有点击记住我过.我们就把guid的值读出来,然后在数据库中找到是谁的.把用户读进实体类,然后赋给Session["currUser"]



第二种:

把用户名和密码写入cookie

用户密码:p
随机产生一个两位的字符:s
加密算法: result = s+md5(s+md5(p))

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

3 个回复

倒序浏览
学习一下
回复 使用道具 举报
值得学习ing!
回复 使用道具 举报
对不起,这个知识点我带走了。
{:soso_e183:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马