【发布时间】:2017-07-04 00:52:10
【问题描述】:
我正在为我的网络应用程序使用 Dancer2 和 YAML 会话引擎。
我的config.yml 包含
engines:
session:
YAML:
...
cookie_duration: 5 minutes
...
我想显示类似 “您的会话将在 X 分钟后到期”的内容。
如何访问该值,即如何访问路由中的$session 对象?
使用 DSL 关键字 session 我只能设置和获取
任意值,例如 session username => 'Bob'; 和 $username = session('username'); 等。
请注意,我对获取配置值 (settings('engines')->{session}{YAML}{cookie_duration}) 不感兴趣,因为这是我必须解析的字符串,它取决于 YAML 作为我的会话引擎。我想访问$session->session_duration。
【问题讨论】:
-
理论上你应该做
session->expires,因为session只是在这样使用时返回会话对象。但是,在我返回undef的测试中。但是我没有完整的配置,可能我做错了什么。如果你通过Data::Printer执行p session,你会看到session返回的Dancer2::Core::Session 对象有一个方法expires。cookie_duration不是服务器上会话的到期时间。见metacpan.org/pod/Dancer2::Core::Session#expires -
嘿,酷!这正是解决方案。在我的配置中
session->expires返回 1514648770(即now + 6 months,我当前配置为cookie_duration的值)。完美的。我的问题是我无法弄清楚如何访问该值和/或将session()转换为$session。如果你写一个(简短的)答案,我会用赞成票压倒它。 ;-)