1

通常、単一ページ アプリケーションでは、Web ページ (dashboard.html) を要求し、サーバーからそれを取得して、(ajax を使用して) その上にいくつかのダッシュボード データをレンダリングします。

ユーザーが backed から認証された場合 (有効な電子メールとパスワードを持っている場合) にのみ、dashboard.html を表示したいです。

$.ajax({
    url: "dashbaard.json",
    dataType: "json"
}).done( function(data){
    // data = { inValid: true } - from backend
    if(data.inValid){
        alert("You are not authorized user, please register 1st!");
        location.href = "register.html";
    } else {
        // render data on dashboard page - valid user
    }
}) 

しかし、ユーザーが有効でないと仮定すると、ここに問題があります

  • ユーザーが dashboard.html を要求した場合、ユーザーが有効ではなくてもすべてのアセット (css、js、画像) が読み込まれます。この場合、単一の css または js ファイルを読み込む意味がありません。

期待される結果: ユーザーが Dashboard.html を要求した場合、ユーザーが有効でない場合、サーバーから不要なものをロードすることなく、すぐにログイン/登録ページにリダイレクトされる必要があります。

シングルページアプリケーションでの処理方法(可能な場合はページの更新なし)ページのちらつきのない最善のソリューションが必要です。バックエンド認証を処理するためにLaravel 4を使用しています。

4

2 に答える 2

0

私のやり方は、この状況を処理するためにポップアップ/モーダル ログイン ボックスを使用することです
ajax リクエストが認証されていないユーザーを返す場合、ログイン ボックス (フェイスボックス、ブートストラップ モーダルなど)
を表示します ajax リクエストが認証されたユーザーを (データとともに) 返す場合、ダッシュボード データをレンダリングします

于 2013-11-22T04:08:14.010 に答える
0

ふたつのやり方:

  1. dashboard.html を php や asp.net などの別のサーバー言語に変更し、サーバー側で認証を処理します。無効な場合、ログイン ページにリダイレクトされます。

  2. ページの準備ができたら認証をリクエストし、ajax リクエストごとに beforeSend 設定を追加します。$.ajaxSetup({beforeSend: function(){ // request authentication sync and redirect }});

No.2 の方法を取る場合は、authorize メソッドを javascript ファイルに追加することをお勧めします。

それが役に立てば幸い。

于 2013-11-13T07:23:36.130 に答える