RESTとセッション管理
URLにセッションIDを含めるな、とは良く言われるところです。リファラやらプロキシから漏れる可能性があるから、ということですね。
で、代わりにPOSTメソッドを使えと。hiddenにセッションID入れとけばCSRFも問題ないぜと。
でも、REST的にはPOSTはリソースの新規作成に使うべきとされている。というか、そもそもRESTとセッションは関係ないという話もある。
この辺のいかんともしがたい感をどうしようか。
いま考えているのは:
- cookieにユーザIDとパスワードを保存しとく
- 認証の必要な情報をGETしたいときは、JavaScriptでcookieを読み込んでpostBodyに含め、「リソース取得用リソース作成URL」にPOSTする
- 返ってきたLocationをGETする
というまどろっこしい手続き。「A Web-Centric Approach to State Transition」の応用というか、そのままというか。
cookieを使うのは自動ログイン機能を実装したいため。必要ないなら、HTMLにユーザIDとパスワードを書いとく。
でもなあ。いったんPOSTしてからGETしてね、なんてAPIを外部に公開しても、んだよ面倒くせえなあと思われそうな気もする。そういうトレードオフがあるなあ。気にするこたないか。