ajax フォームでトークンを使用したい。フォームは、一意のトークンを生成する ajax コントローラーから読み込まれます。次に、フォームが同じコントローラーに投稿されます。
しかし、私はそれを正しく理解できません!フォームが読み込まれてから投稿されると、セッションが空になるか、新しいトークンが作成されます! これは、ajax 呼び出しが行われたときにフォームとトークンが作成されるためだと思います。
これが私がしたことです:
ajax コントローラーの before() に create the token 関数を配置しました。ajax がページをロードするたびに、常に変化しているため検証されない新しいトークンが作成されます。
そこで、トークン関数をメインコントローラーに移動し、そこにトークンを作成しました。ajaxコントローラーはメインコントローラーを拡張せず、別のものです。私は今、ajax呼び出しがトークン関数をロードしないと思ったからです。代わりに、ajax コントローラーはメインで作成されたトークンを取得するだけです。でも……空っぽ
私は試しました Session::instance()->get('securitytoken') アプリケーション全体のすべてのセッションにアクセスするはずですよね?
誰も私がこれを正しくする方法を知っていますか? または、別のコントローラーで作成されたセッションにアクセスできないのはなぜですか?
このテスト関数は ajax を介してトークンを取得します
class Controller_Ajax extends Controller_Temp{
public function action_test(){
$user2 = Session::instance()->get('securitytoken');
echo $user2; }
}
私のメインコントローラーで:
$token = md5(uniqid(microtime(), true));
Session::instance()->set('securitytoken', $token);
ありがとうございました