2017-07-03 62 views
2

我爲我的網絡應用使用了Dancer2和YAML會話引擎。 我config.yml包含如何訪問Dancer2的會話對象?

engines: 
    session: 
    YAML: 
     ... 
     cookie_duration: 5 minutes 
     ... 

我想顯示類似「你的會議X分鐘後過期」

如何訪問此值,即如何訪問我的路由中的$session對象?

隨着DSL關鍵字session我只能設置和獲取 任意值,如session username => 'Bob';$username = session('username');

請注意,我不感興趣,在得到配置值(settings('engines')->{session}{YAML}{cookie_duration}),因爲這是一個字符串我d不得不解析,這取決於YAML是我的會話引擎。我想訪問$session->session_duration

+1

從理論上講,你應該做'會話級> expires',如'session'剛剛返回會話對象時,它的使用這樣的。但是,在我的測試中,返回'undef'。但是我沒有完整的配置,可能我做錯了。如果你通過'Data :: Printer'做'p session',你會看到'session'返回的Dancer2 :: Core :: Session對象有一個'expires'方法。 cookie_duration不是服務器上的會話過期。見https://metacpan.org/pod/Dancer2::Core::Session#expires – simbabque

+1

嘿,酷!這正是解決方案。在我的配置中,'session-> expires'返回1514648770(這是「現在+ 6個月」,我當前配置的值爲'cookie_duration')。完善。我的問題是,我不知道如何訪問該值和/或將'session()'轉換爲'$ session'。如果你寫一個(簡短的)答案,我會用upvotes來壓倒它。 ;-) – PerlDuck

回答

1

當您在沒有任何參數的情況下調用session時,您將獲得會話對象。如果可以更容易閱讀,請隨意將其分配給$session變量。要獲得到期時間,請使用the expires method

my $session = session; 
warn $session->expires; 

或者簡單:

warn session->expires;