Catalyst でかんたんログインを実装する
前回の、Catalyst でオートログインとブラウザを閉じるまで有効な Cookie を共存の続きです。
mixi などで実装されている、携帯端末固有情報や契約者識別情報を利用した、「かんたんログイン」を実装する方法を紹介します。
前回の、Catalyst でオートログインとブラウザを閉じるまで有効な Cookie を共存の続きです。
mixi などで実装されている、携帯端末固有情報や契約者識別情報を利用した、「かんたんログイン」を実装する方法を紹介します。
Catalyst::Plugin::Session では、デフォルトではセッションの有効期限は $c->config->{’session’}{’expires’} の値に固定です。
ですので、「次回からログインを省略する」のようなオートログイン機能を実装するには、セッションの expires を動的に変更する必要があります。
ming で生成した Flash Lite 1.1 の swf である条件下で TextField に addString() した文字列が、DoCoMo の端末で表示できない場合があります。
画面サイズが、240px * 240px の端末に、
$movie->setDimension(240, 240);
とすると、上記の問題が発生します。
これを回避するには、
$movie->setDimension(240 - 1, 240 - 1);
とすると、表示されるようになります。
Catalyst - Session管理とHTMLエンティティコード(数値文字実体参照) でも言及されているように、Catalyst::Plugin::Session::State::URI を使っていると、
<img alt="日本語" />
などが、エスケープされてしまい、表示がおかしくなったりします。
ふと、for で回してパラメーターの個数分変換するのと、Data::Dumper でダンプして1回だけ変換して eval するのとどっちが速いのか気になってベンチマーク取ってみました。
コードと結果は以下。
Catalyst::Plugin::FillInForm::ForceUTF8 に抜けがあったのでパッチ書きました。
--- lib/Catalyst/Plugin/FillInForm/ForceUTF8.pm.orig 2009-02-08 14:39:24.000000000 +0900
+++ lib/Catalyst/Plugin/FillInForm/ForceUTF8.pm 2009-02-08 14:40:02.000000000 +0900
@@ -115,11 +115,13 @@
sub fillform {
my $c = shift;
my $fdat = shift || $c->request->parameters;
+ my $additional_params = shift;
$c->response->output(
HTML::FillInForm::ForceUTF8->new->fill(
scalarref => \$c->response->{body},
- fdat => $fdat
+ fdat => $fdat,
+ %$additional_params,
)
);
}
最近また SPAM が増加傾向にあるので、ブラックリストをもっと細かく指定できるようにパッチを書きました。
Jon Atkins 氏の qgreylist に、S25R と tarpit 機能を付け、ブラックリスト、ホワイトリストに指定するホスト名を正規表現で指定できるようにした、ちっち氏の S25R + tarpit before qgreylist パッチ に、さらに CIDR 表記で指定できるようにしたパッチです。
greylist のデフォルトの blacklist の指定の仕方ですと、192.168.0.80 ~ 192.168.0.96 を拒否したかったら、192.168.0 と、256 アドレス巻き込んで拒否するか、16 ファイル個別に羅列して拒否するしかなかったので、アドレス範囲で拒否できれば便利だなと思い作成しました。
HTML-lint は便利ですが、デフォルトでは ”Another_HTML-lint/1.22 +libwww-perl/5.820” という User-Agent を固定で吐いているので、モバイル対応サイトなど、User-Agent によって表示を切り替えているサイトでは、URL によるチェックができず、Data エリアに HTML ソースをコピペしてチェックするしか方法がありません。
そこで、いちいちそれをしていては面倒臭いので User-Agent を任意に切り替える機能を付けました。
携帯サイトの CSS 対応は、今まで HTML::DoCoMoCSS を使用していましたが、01/15 に HTML::MobileJpCSS がリリースされていたので試してみました。
どういうことをしてくれるモジュールかと言うと、例えば hr タグは色を付けたいときに、キャリアによって下記のようにスタイルの指定が違います。
DoCoMo <hr style="border-color:#FF0000;" />
au <hr style="color:#FF0000;" />
SoftBank <hr style="border-color:#FF0000;" />
これを、ひとつの指定でモジュール側で 3 キャリア分の指定方法の振り分けを自動でやってくれるというものです。
Fedra Core 5 に libming をインストールする方法です。
現時点での最新版、ming 0.4.0-rc2 をダウンロードします。
(続きを読む…)
最近のコメント