Dan*_*ira 4 session asp-classic
在我的经典ASP应用程序中,当客户端关闭浏览器时,与ASP会话ID相关的cookie会丢失,甚至认为会话没有超时.所以...
即使客户端关闭浏览器,如何使ASP会话ID cookie保持不变?
当您启动新的浏览器会话并浏览到您的站点时,经典ASP将检测到没有ASP会话cookie并将为您创建一个新会话(正如您已经体验过的那样).
会话cookie就是这样,它们在会话的生命周期中存在.当您关闭浏览器时,会删除会话cookie(即使您的服务器上的会话状态将作为孤立会话继续存在,直到Session.Timeout到期 - 除非您在Session.Timeout期间再次呈现相同的会话cookie).
在新的浏览器会话/实例中延长ASP会话cookie生命周期的唯一方法是使用浏览器/客户端上的脚本来改变cookie生存期.
如果您希望在浏览器关闭等事件中管理状态,则需要实现自己的状态管理机制(例如,持久化状态到数据库)并使用具有较长生命周期的常规cookie(或者具有滑动到期时间)您在服务器端脚本中的每个请求上延长生命周期的时间,以使状态与用户匹配.
编辑:
以下文章有一个脚本来修改会话cookie(向下滚动到Cookie Expiration):
但正如Shoban正确指出的那样,存在会话固定(OWASP)的风险.但是,你可以采取某种方式来保护自己免受这种伤害:
我还要补充一些注意事项,如果你的应用程序存储敏感数据(信用卡,财务,医疗等),那么我建议不要这样做,并考虑到你的用户必须再次登录并开始一个新的会话.比抱歉更安全.