#動いていたはずなのに
Codeigniter3.0とIon Authである程度動線を作りこみ動作確認を行ったときは問題はなかったのに、デザインテンプレートをあてこみIonAuthで既存のUsers情報を更新しようしたところ、セキュリティに問題があるということでどうしても失敗してしまう。
#セッションに問題があるらしい
コントローラAuth.phpでは、1)パスワードのリセット 2)Users情報の更新 には事前にセットされた2つのセッション変数(csrfkeyとcsrfvalue)を照合して成功すれば 1)と 2)それぞれ正常に動作する。
2つのセッション情報は同じコントローラAuth.php内の _get_csrf_nonce という関数で代入される。
私が失敗していたのは更新途中でこの2つのセッション情報が消失してしまったからだった。
#原因はたぶんjquery.min.js
デザインテンプレートをあてこんでから挙動がおかしくなったので、読み込んでいるcssやJSをひとつひとつはずしてみたところ、jquery.min.jsを読み込んだ後に2つのセッション変数(csrfkeyとcsrfvalue)が消えてしまうことがわかった。
本来ならしっかり検証しなくてはならないところだけど。。。
#とりあえずの対処方法
直接$_SESSIONを使うことにした。変数はjqueryにかぶらないように?790行目あたりを
$key = $_SESSION["ion_auth"]["csrfkey"];
$value = $_SESSION["ion_auth"]["csrfvalue"];
と書き換えたらUsersが更新できるようになった。