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

解决方案 »

  1.   

    楼主概念不清。
    你选择的记住一周是用COOKIE的,COOKIE是在本地的,而你所谓的SESSION,“业务功能”都是服务端的。不要扯到一起
      

  2.   

    这个不用cookie做不了,cookie也是唯一在不惊动客户的情况下使用客户的硬盘资源。
      

  3.   


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

  4.   

    汗,可能是我没有说清楚,我只是说CSDN可不可以改一下记住登录的机制。我知道代码怎么写的。
    第二个,我是说记住密码的实现方法讨论,用SESSION做不完美,有没有其他方式。至于是什么方式,只要可以就行。
      

  5.   

    此电脑下次进入登陆页面会自动帮用户回填用户名和(加密)密码。这里用SESSION做很多BUG,你们知道?
      

  6.   

    我明白你的意思,你的意思就是,只要服务器判断到了用户当前的登录行为,就自动以当前的时间戳为准,将密码过期时间推后一周,这个应该是可以实现的。如果你用cookie的话,那所有的信息就被限定在了本机范围之内了。你的题目里写的“1号线”,“3号线”是指跨机器?还是指其他的?有一点是肯定的,如果用户使用了一台之前从来没有登陆过的新机器,那他是必须要重新手动输入一次密码的。
      

  7.   


    就一台机器上面也有问题。特别是用使用收藏功能进入登陆页面,是一个新的SESSION。
      

  8.   

    有是有办法实现你这个所有浏览器在同一台机器自动登录网站的功能. 
    但是这个没有必要. 
    另外现在基本上所有网站记住密码功能都是用cookie实现的.而cookie和session没有鸟的关系.
    你每次打开一个新的浏览器窗口都是一个新的session.和你收藏夹打开还是手动输入都没有关系.
    每次的sessionId都是在服务器段生成.
      

  9.   

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