3

これは、単純な 1 回限りの質問ではなく、パターンとディスカッションの要求です。ユーザーがさまざまな役割の一部になることができるバックボーン アプリがあります。ルートは通常どおり定義されます。

routes:
  "": "showHomePage"
  "import": "showImportPage"

import特定のユーザー ロールのみがページにアクセスできるようにしたいと考えています。私は次のようなことができると思います:

showImportPage: ->
  if not MyApp.CurrentUser.can_import
    return

これは実際に機能します。もちろん、ご想像のとおり、これは Chrome コンソールを使用するだけで簡単に悪用されます。リンクをどこにも表示しなくても、アドレス バーに移動して入力するだけで非常に簡単です。

上記は通常のユーザーを停止するのに十分なはずですが、私の質問は、そのルートがアクセスされないようにするにはどうすればよいですか?

私が今まで持っている唯一の方法は、特別な URL をチェックするか、アクセスする前に User モデルを再取得することによって、そのルートを提供する前にサーバーを参照することです...私はこの問題を抱えていますが、すべてのURLがサーバーによって認証される必要があり、ユーザーがナビゲートできるようにする前に通常のajaxスピナーを表示する必要がある場合、これは基本的に「シングルページアプリ」の背後にあるアイデア全体の目的を無効にします...私は知っています行き来するデータの量は最小限 (json ユーザー情報のみ、またはそれ以下) ですが、それでも...

この問題に直面したことがある場合、あなたの意見や解決策は何ですか?

4

1 に答える 1

2

あなたの質問は素晴らしいものだと思います。

BackboneJSとJquerymobileを使用してPhoneGapアプリを作成したので、現在直面しているのと同じ問題に直面しました。

本質的に間違っているので、承認はクライアント側だけで生きることはできないと思います。クライアントに住んでいるものは、クライアントによって完全に制御されており、それは誰も変更できないものです。

サーバーにリクエストを送信しても、リクエストが必要な最小限のデータを取得し、すべてのロジック/ビューコンポーネントがクライアントに配置されている限り、単一アプリページのパラダイムを破ることはありません。

そのページに通常のユーザーに見せたくない機密データがある場合は、リクエストの承認を確認した後にサーバーから送信する必要があるため、ユーザー情報のJSONだけではないことに注意してください送信する必要があるのは、データ自体でもあります。

他の誰かがここで私が間違っていることを証明してくれることを願っていますが、私にとってはそれが取引です。

于 2012-11-13T16:55:04.473 に答える