6

古いバージョンの Android (2.3.x) 用の web/phonegap アプリケーションを構築しています。サーバーのリダイレクトをミックスに追加しようとするまで、すべてがうまく機能します。シナリオは次のとおりです。

サーバー (node.js) には、「/」でリッスンするルートがあります。このルートがヒットすると、セッションがあるかどうかを確認します。セッションがない場合は、/login にリダイレクトされます。結構です、この部分は機能します(とにかくサーバーに関して)。

クライアントがリダイレクトを取得すると、問題が発生します。Android 2.3 は history.pushState をサポートしていないため、hashbangs にフォールバックします。これは、AngularJS が URL を /#!/login に書き換えることを意味します。これにより、サーバー リクエストが「/」になり、サーバーがセッションをチェックして「/login」にリダイレクトし、AngularJS が URL を /#!/ に書き換えます。ログイン..などなど..無期限に。

AngularJS を使用してサーバーからリダイレクトする方法はありますか? このロジックを自分のルートで処理するのではなく、クライアントに実装する必要がありますか? これを処理する方法が必要だと確信していますが、それを理解できないようです。

どんな助けでも大歓迎です。ありがとう!!

4

2 に答える 2

1

リダイレクトをコマンドするための単純なオブジェクトを使用します。
ユーザーがログインしていない場合は、{action: "redirect" url:"/login"}

次に、クライアントで、応答を取得した後action == 'redirect'$location.path(url)

于 2013-02-15T08:38:51.330 に答える
0

純粋にクライアント側で認証を行った方がよいでしょう。角度のある端で最初にajax呼び出しを実行して、ログインしているかどうかを確認します。ログインしていない場合は、ユーザーに情報の入力を求め(おそらくモーダルダイアログで)、サーバーの「/login」にPOSTします。

セキュリティ上の理由から、認証に依存する情報をクライアント側に保存しないでください。代わりに、ajaxを使用して取得し、ユーザーが正しくログインしていない場合は、401またはエラーでajaxに応答します。

于 2013-02-07T14:16:24.697 に答える