私が起こっていると思われるのは、あなたがページを開いてセッションが終了し、ユーザーがAjaxで何かを要求したときにページがログインページにリダイレクトすることです。したがって、ネットワークトラフィックと要求されたアクションを見ると、リダイレクトされたページが表示され、有効なJsonレスポンスではないため、エラーが表示されます。
私のサイトにも同様のことがあります。基本的に、ユーザーがログインする必要があるすべてのページは、ユーザーがログインしてページを表示できるかどうかを確認する機能によって保護されています。そうでない場合、2つの事のいずれかが起こり、ユーザーがリダイレクトされます。または、要求タイプがAjaxの場合、Jsonエラーを解析します。
私が概説したものと同様のものを採用することをお勧めします。ちょっと注意すると、phpとjsスクリプトの両方でAjaxエラーを解析する際にPHPで同じ応答形式を使用することが連続性にとって重要です。
例:でも、AJAXとのセッションを使用する理由
public function protect($allowed = array())
{
$uri = uri_string();
// user isn't logged in
if (!$this->ion_auth->logged_in()) {
if ($this->input->is_ajax_request()) {
encode_response('error', $this->lang->line('login_expired'));
} elseif ($uri == rtrim($this->success_login_redirect, '/')) {
redirect(CMS_DIR_NAME . '/login');
} else {
$this->session->set_userdata('login_redirect', '/' . $uri);
redirect(CMS_DIR_NAME . '/login');
}
}
$this->session->unset_userdata('login_redirect');
if (!$this->ion_auth->is_admin() && !$this->ion_auth->in_group($allowed, $this->curr_user->id())) {
if (!$this->is_user_allowed($this->curr_user->group()->name)) {
show_error($this->lang->line('messages_page_access'), 403, 'Error');
}
}
}
?私にとっては、それは単にブロックオーバーヘッドと思われる。 – davidkonrad
@davidkonradは、管理パネルがajaxを使用すべきでないことを暗示していますか? admin = logged in = sessions – Alex
@Alexいいえ、スクリプト内のセッションは避けてください。ブロックされないように閉じる必要があるコンテンツを提供するAJAXスクリプトで、 'start_session()'の利点を見ることはできません。あなたは参照元にアクセスできます。リクエストにチケットを追加することができます。代わりに、クロスドメインアクセスなどを防ぐことができます。 – davidkonrad