如何使用Dancer::Session::Cookie在Dancer(Perl)中空闲时销毁Cookie?

如何使用Dancer::Session::Cookie在Dancer(Perl)中空闲时销毁Cookie?,perl,session,cookies,dancer,expired-cookies,Perl,Session,Cookies,Dancer,Expired Cookies,是否有一种内置的方法来销毁在空闲一定时间后由生成的会话cookie?我注意到,当我重新启动Nginx或Starman服务器时,它甚至不会破坏会话,出于安全原因,这不是我想要的 如果没有内置的方式,那么在SQL数据库中存储会话最后一次处于活动状态的时间并在每次操作后更新它是否有内在的错误?然后,如果超过15分钟左右没有更新该条目,会话cookie将使用会话->销毁来销毁。这似乎不是最好的解决办法,但也许这是唯一的办法。据我所知,您也可以在HTTP头中手动设置cookie过期时间,但这只会破坏客户端

是否有一种内置的方法来销毁在空闲一定时间后由生成的会话cookie?我注意到,当我重新启动Nginx或Starman服务器时,它甚至不会破坏会话,出于安全原因,这不是我想要的


如果没有内置的方式,那么在SQL数据库中存储会话最后一次处于活动状态的时间并在每次操作后更新它是否有内在的错误?然后,如果超过15分钟左右没有更新该条目,会话cookie将使用会话->销毁来销毁。这似乎不是最好的解决办法,但也许这是唯一的办法。据我所知,您也可以在HTTP头中手动设置cookie过期时间,但这只会破坏客户端的cookie,对吗?

我想您应该做相反的操作

生成cookie时,请使用expires属性将其设置为(例如)15分钟:

然后每次为该会话执行某些操作时,调用Dancer::Cookie init方法:

。。。若要在不使用默认路径的情况下刷新cookie,请传入路径

用户的浏览器应在给定时间后使cookie过期


实际上我还没有尝试过,但代码暗示它应该可以工作-init方法的文档肯定会更清晰

也许可以尝试设置?Dancer::Cookie和Dancer::Session::Cookie兼容吗?我现在正在使用Dancer::Session::Cookie生成会话,但我会尝试一下您的建议并让您知道!我决定通过将过期日期存储在加密的cookie中,在每次请求后更新它,并检查它是否过期来处理过期问题。在客户端,我只是使用配置文件中的session_expires:“24小时”设置1天的固定过期时间。我不知道如何在每次请求后使用Dancer::Session::Cookie修改客户端上的过期值,但1天的固定时间应该可以,不管怎样,他们将在30分钟不活动后注销,因此我怀疑是否有人会整天不休息30分钟。