ログアウト機能

唐突に気づいたので書いてみる。違ってるかも知れない。

はてなのログアウト機能は、一度ログアウトするとそれまでのログインがすべて無効になる。普段決まった場所からしかログインしない人は気づきにくいかもしれない。

僕が気づいたのは、はてダラがログアウトするとブラウザもログアウトされたからだが。


これを確認する簡単な方法は、別なブラウザを使ってみることである。
まず、普段IEを使ってるならば、OperaMozillaなどをいれてみる。IEOperaを両方開き、Yahoo!にログインしてみる。そして、IE側でログアウトする。
すると、Yahoo!ではログアウトしたIEはログアウトされているものの、ログアウト操作をしていないOpera側ではログインしたままになっているはずだ。(これは、これらのブラウザがクッキーを別な場所で管理しているからである)

しかし、同じ操作をはてなで行うと、IEでログアウトするとOperaでもログアウトされる。


この挙動は知っていたが、なぜこういう実装にしているのかいまいちピンと来なかった。どちらかというと、素直な挙動ではない。
なぜなら、こうしようと思ったらログイン判定をするのにクッキーの値の妥当性チェックだけではダメで、たぶんログイン判定のたびにDBへのアクセス(といってもselect一回だが)が発生する。はてな位の規模になると、かなりのコストになるはずだ


ではなぜわざわざこんな処理をするか?唐突に思い付いたのはこの理由。
おそらく、インターネットカフェやら友達の家やらではてなにログインし、ログアウトしないまま置いて来てしまった時の対策だろう。
これをやってしまうとかなり痛い。誰かしらない人に日記を勝手に全部削除されてしまうかもしれないし、勝手に書き換えられるかもしれない。
Yahoo!でこれをやってしまうと、パスワードを変更しないとなりすましを防げないが、はてなならば単にログアウトするだけでよい。これはエライ違いだ。
はてなのエンジニアさん、当たりでしょ?当たってたらなんかください。


他のサイトもこういう仕様にしてほしいな。
僕としては特に希望するのはYahoo!だけど。(部分的にはこれに近い挙動になっているようだ。例えばメールやカレンダーのような、プライバシーなデータを持ってる所は、クッキーを保存する設定にしていても、クッキー自体の有効期限よりも短いタイムアウトを持っているようで、もう一度パスワードを聞かれることが多い。)
ただ、あそこは1日7億だか8億だかという途方もないページビューがあるので、おそらくログインのチェックのたびにDBを参照するのはたぶん無理だ。
はてなも、このクラスのアクセス数になったら仕組みを変えざるを得ないんじゃないかと思う。無論、それに耐える位ユーザDBを冗長化すればいいんだけどね。このコストはペイできるか非常に疑問。