2017-07-03 9 views
2

私はDancer2と私のWebアプリケーション用のYAMLセッションエンジンを使用しています。 マイconfig.ymlDancer2のセッションオブジェクトにアクセスするには?

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

が含まれている私は「あなたのセッションはX分に期限が切れる」のようなものを表示したいと思います。

この値にはどのようにしてアクセスできますか。つまり、私のルートの$sessionオブジェクトにはどうすればアクセスできますか? session username => 'Bob';$username = session('username');などの

私は設定して 任意の値を取得することができますDSLキーワードsession

、など私は、設定値を得ることに興味がない

注(settings('engines')->{session}{YAML}{cookie_duration})それは私が「文字列だからdは解析しなければならず、YAMLがセッションエンジンに依存しています。 $session->session_durationにアクセスしたいと思います。

+1

それはそのように使われているときsession'だけのセッションオブジェクトを返す 'として、あなたは、'セッション - > expires'を行う必要があります。しかし、私のテストでは '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(' now + 6 months'、私は現在 'cookie_duration'として設定した値です)を返します。完璧。私の問題は、その値にアクセスする方法や、 'session()'を '$ session'に変換する方法がわからないことでした。あなたが(短い)答えを書いたら、アップヴォートでそれを圧倒するでしょう。 ;-) – PerlDuck

答えて

1

引数なしでsessionを呼び出すと、セッションオブジェクトが返されます。読みやすくする場合は、$session変数に自由に割り当ててください。有効期限を取得するには、the expires methodを使用します。

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

それとも単純:理論的には

warn session->expires; 
関連する問題