Mojoliciousでクッキーの値が設定されているか、クライアントサイドで確認したい
以下のように、Mojolicious::Plugin::Web::Authプラグインをつかっています。 やりたいことは、ブラウザを閉じたらセッションを無効化したい。
package Atndfc::Web; use Mojo::Base 'Mojolicious'; # This method will run once at server start sub startup { my $self = shift; # Documentation browser under "/perldoc" $self->plugin('PODRenderer'); my $config = $self->plugin( 'Config', { file => 'atndfc.conf' } ); #Twitter $self->plugin( 'Web::Auth', module => 'Twitter', key => $config->{twitter_consumer_key}, secret => $config->{twitter_consumer_secret}, on_finished => sub { my ( $c, $access_token, $access_secret, $account_info ) = @_; $c->session( expiration => 0 ); $c->session( 'access_token' => $access_token ); $c->session( 'access_token_secret' => $access_secret ); $c->session( 'screen_name' => $account_info->{screen_name} ); $c->session( 'user_id' => $account_info->{id} ); $c->session( 'site' => "twitter" ); }, ); # Router my $r = $self->routes; # Normal route to controller $r->get('/login')->to( cb => sub { my $self = shift; $self->session(expires => 1); $self->redirect_to("/auth/twitter/authenticate"); } ); $r->get('/follows')->to("root#follows"); $r->get('/')->to("root#index"); $r->get('/auth/twitter/callback')->to( cb => sub { my $self = shift; $self->redirect_to("/"); } ); } 1;
クライアント側でmojolicousクッキーが設定されているか確認したい。
var token = $.cookie('mojolicious'); alert("has cookies" + token);
Twitterログイン(/login)のあと、/にリダイレクトされて、その延長で上記javascriptコード が走るんですが、alertで表示されるtokenの値がundefinedとなって、うまくいかない。 ログイン後なので、クッキーに値が設定されてるはずなんですが。
なんとか、クライアントサイドでクッキー値(Mojolicious)があるか、判断したいんですが。 クッキーの値があった場合のみ、ajaxでサーバーサイドPerlと1回会話したい。 ない場合は、会話をしないようにしたい。無駄な通信をさせないために。
javascriptに変数を渡すなら、これでいいか。
リダイレクト先の/のrenderの中でセッションの値を渡せば目的は 達成されるかな。
render(json=>session("user_id"),partial=>1);