2

デュランダル、ノックアウトを使用してシングルページアプリケーションを作成しています。私は次のことをする必要があります(2つの非常に簡単なこと):

  1. ユーザーの権限に基づいて、管理者専用のウィジェットを表示/非表示にします。
  2. ユーザーが認証されているかどうかに基づいてメニュー オプションを変更します (匿名の場合 - ログイン/サインアップ、認証された場合は "Welcome .." を表示します。

これが通常の MVC4 アプリケーションである場合、@if (User.Identity.IsAuthenticated) { ... } かみそりビューでチェックを使用して実行しますが、durandal のビューではこれは除外されます。

機密性の高いビジネス ロジックを JavaScript に入れることは避けたいと考えています。ユーザーは、管理者だった場合にどのようなオプションを利用できたかを知る必要はありません。

Durandal & Knockout でこれを達成するための最良の方法は何ですか? これまでは従来の ASP.NET を使用してコーディングしており、最近は ASP.NET MVC を使用しています。Durandal を使用して SPA を開発することは、私にとって新しいゲームです...誰かがこれを行うための手順/ポインターだけを教えてくれれば、それも大いに役立ちます..事前に感謝します!

4

1 に答える 1

3

私のやり方です。

  1. 私のメニューは menubar.js ファイル内に構築されています。menuItems は最初は observableArrays([]) であり、トピック「user-logged-in」にサブスクライブします。
  2. ユーザーがログインすると、ユーザーの権限/ロールを取得し、ローカルのストレージに保存します。次に、ユーザーデータとともに通知「user-logged-in」を送信します。
  3. 私のメニューバーは通知を受け取り、権限/役割をチェックし、さまざまなメニュー項目を適切に追加します。
  4. shell.html には、menubar.js のビュー構成があります。したがって、メニュー項目があれば表示されますが、そうでない場合は表示されません。したがって、ユーザーがログインすると、menuItems が入力され、この時点でメニュー項目が表示されます。
  5. ユーザーがログアウトすると、ローカル ストレージ キャッシュがクリアされ、「user-logged-out」というメッセージが送信されます。
  6. menubar.js はこのメッセージを受け取り、そのメニュー項目をクリアして、基本的に menubar.htm のメニューをクリアします。

基本的にウィジェットに対して同じことを行い、特定の権限/ロールに対して非表示または表示するプロパティへの可視バインディングを使用できます。

また、router.guardRoute も重要です。これを読んで、ログインせずにルートに直接行くことができないようにしてください。

それが役立つことを願っています

于 2013-04-16T13:32:57.980 に答える