質問: いわゆるログイン機能を実装しようと考え、FuelPHPのSessionを利用しております。 通常のログインかつLocal環境は問題なく動作しているのですが、 Staging環境ではうまく動作がしません。 以下の違いによりログインができないのではないかと考えております。 | 項目 | Local | Staging | | --- | --- | --- | | ドメイン | ログイン時の遷移元と遷移先のドメインは同一 | ログイン時の遷移元と遷移先のドメインが異なる(cms-example.com -> example.comへ遷移) | | サーバー | Vagrantを用いているので、遷移元と遷移先は同一のサーバー内 | 遷移元と遷移先のサーバー(Amazon EC2)が異なる | | Session Driver | file形式の保存 | memcachedを利用 | なお、Sessionのconfigファイルのmatch_ipはfalseでIPアドレスが一致しなくてもSessionを破棄しないようになっております。 これらの違いからうまくSessionの受け渡しができないことはあるのでしょうか? 他に情報が欲しい場合にはおっしゃってください。 なにか考えられる原因がございましたらご教授いただけますと幸いです。 よろしくお願いいたします。
回答: ドメイン違うとだめですね。 ### 追記 1. ログインしているcms-example.comからユーザー情報を元にした一時的なトークン発行 2. そのトークンを元にしたパラメータをexample.comに渡してログインリクエスト 3. 同じトークンを元にしたリクエストであることを検証(必ずサーバー側で。JavaScriptとかでやると不正アクセスし放題になります)できれば同一ユーザーであることを断定できるのでそのユーザーでexample.comにてログイン。 スマホアプリからサーバーにアクセスして認証する方法など、色々参考になる情報はあると思います。適当にやるとセキュリティ的に問題が出ますので(不正ログインによるアカウント乗っ取りなど)色々より良い方法を調べて見て下さい。