日期:2014-05-18  浏览次数:20631 次

CSDN登陆和讨论一个记住用户、密码的问题
经常上下CSDN,登陆时候有个选择记录一周,这里应该是说我本次登陆以后一周之内不需要重新登陆了。
假如1号我登陆了,在3号我又使用了,可以不可以重新设置一下失效时间,使用最后登陆时间+一周作为过期时间,不知道有没有说错?
记住用户和密码一般网站是使用COOKIE做的,但是有很多不能完美解决问题,比较新的SESSION、不同浏览器等等。还有一种可能的方式,就是通过业务功能来,记录用户的一个唯一标示,来反填写用户名和(加密)密码,这里使用什么呢,IP应该行不通,有什么唯一标示吗?

------解决方案--------------------

比如可以这样

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletExceptionIOException {
Cookie cookie = new Cookie("lastAccessTime", System.currentTimeMillis()
+ "");
cookie.setMaxAge(7*24*60*60);// 以秒为单位,保存一周
response.addCookie(cookie);

}


------解决方案--------------------
我明白你的意思,你的意思就是,只要服务器判断到了用户当前的登录行为,就自动以当前的时间戳为准,将密码过期时间推后一周,这个应该是可以实现的。

如果你用cookie的话,那所有的信息就被限定在了本机范围之内了。你的题目里写的“1号线”,“3号线”是指跨机器?还是指其他的?

有一点是肯定的,如果用户使用了一台之前从来没有登陆过的新机器,那他是必须要重新手动输入一次密码的。
------解决方案--------------------
session肯定不行,服务器保存session的时间不会很长。
cookie必须要用,本地标识。
要想实现lz需求,我认为必须要用数据库记录自定义的cookie。后台解析cookie,到数据库查找,如果能找到则更新cookie。找不到的话,用户只能手动登录。如果选上一周内免登录,那么把cookie录入到数据库。
当然不需要每次都到数据库查,可以先查session,如果session中有用户,直接更新cookie就可以了。没有的话再查数据库。
需求明确,一定有实现的方法,只是不知道lz的需求是否合理。
新手愚见,请轻拍!