2011-12-20 15 views
3

通常、有効なセッションがない場合にユーザーをリダイレクトすることによってユーザーアクセスを制限します。例えばajaxとphpを使用した場合のユーザー認証とリダイレクト

<?php 
    session_start(); 
    if (!isset($_SESSION["userInfo"])) { 
    header("Location: index.php"); 
    } 
?> 

が、私はすべての私のページが読み込まれるため、AJAXを使用して新しいプロジェクトを始めています。

セッションがもう有効でない場合、Webアプリケーションのページを強制的にリフレッシュする必要がありますか?

私のすべてのAJAXリクエストの前に献身認証リクエストが必要ですか?それがjavascript経由でページをリフレッシュできない場合はどうしたらいいですか?

または、私はそれぞれのjsonレスポンスに認証データを含めてから、それ以上のajaxリクエストを処理する前に認証する必要がありますか?

これを行うより良い方法はありますか?

+0

「通常の方法」が間違っていることに注意してください。 'header()'リダイレクトは、ページの残りの部分の実行を停止しません。 'header()'リダイレクトを行うたびに常に 'die()'を続けるか、望ましくない副作用があるかもしれません。 – kba

答えて

2

理想的には、サーバー側からさまざまなエラーを処理できるようにクライアント側コードを十分に設計します。

クライアント側コードがajax呼び出しを行うとき、レスポンスのステータスを調べる必要があります。ユーザーにセッションがない場合、サーバーは401(Unauthorized)応答で応答する必要があります。つまり、「有効なURLですが、認証する必要があります」という意味です。

クライアント側のコードが401になると、ログインしたユーザーを取得するために必要な処理を実行する必要があります。これをログイン画面にリダイレクトするか、何らかのモーダル認証DHTML-popupを実行します。

関連する問題