系统采用form验证,记住密码后登录后保存cookie,该cookie保存了登录用户信息(姓名,id,登录ip),不包括密码,在pagebase里采用IsAuthenticated判断,如果false就返回到登录页面。现在遇到一个问题,假如我同一个用户在两台机器上都记住密码登录,其中一台修改了密码重置了cookie,那另外一台机器上使用系统的时候还是可以直接进入(记住登录状态),我应该在什么地方判断密码已经被修改呢,不想在每个页面都去提交服务器验证

解决方案 »

  1.   

    如果密码已经修改了,不查询数据库怎么知道?登陆的逻辑了,每次都得判断cookie是否和密码框的内容一致,一致的话用cookie验证,不一致用密码框的内容验证
      

  2.   

    这个好像没有地方判断,既然登录了,就没有再进行验证了。
    不在每个页面验证,你可以在Global里面进行,或者写单独的类处理,不用修改页面了
      

  3.   

    有人建议 记住密码登录后除了保持cookie,还使用session保存用户信息,当session过期时就自动跳转到登录页面,在登录页面page_load里读取本地cookie和服务器上比较,如果通过则返回,不通过则提示用户输入用户名密码登录,但我觉得用session就失去了原来form认证记住登录信息的意义了
      

  4.   

    可以考虑保存密码在cookie,当然这个密码是加密后的,每次验证下就行。
      

  5.   

    孟子的意思是在Application_AuthenticateRequest里做处理吗
      

  6.   

    土豆,密码保存在cookie里,然后每次验证,我觉得这样就没必要记住密码这个功呢了,呵呵
      

  7.   

    我现在页面都是继承自pagebase,在这里面做IsAuthenticated判断,如果是我问题说的那种另外一台机器修改了密码,该采用什么方式处理一下,谁能给个方案或建议
      

  8.   

    土豆,我用的是form认证模式,按照msdn上说明,这个认证后是不再重复验证密码的
      

  9.   

    本帖最后由 net_lover 于 2012-05-22 13:22:05 编辑
      

  10.   

    这种情况确实比较麻烦
    这与记住密码的原则相互矛盾
    因为cookie都是记录在客户端的,如果去验证的话,势必导致性能问题,因为每次都次都要去验证的,
      

  11.   


    这种模式怎么样,虽然看起来可以解决问题,但是用session过期跳转到login里判断cookie我觉得已经背离了form认证了