4

シェルの MDI 子として表示されるいくつかのビューを持つ WPF で開発されたデスクトップ アプリケーションがあります。複合/モジュール化されたアプローチで開発されていません。アプリケーションが開くと、すべてのビューにアクセスできるようになります。アプリケーションには、管理者ユーザーと複数のオペレーターがいます。

要件は、管理者ユーザーがオペレーターにいくつかの制限された権限を割り当てることです。

  1. どのオペレーターがどのビューにアクセス/開くことができるか、および
  2. 許可されたビューでどのオペレーターがどのアクションを実行できるか

ここまでの私の考えは –

  1. オペレータ権限情報のデータベースへの格納
  2. ロード時に、現在ログインしているユーザーの権限情報をアプリケーション レベルのどこかに保存する
  3. シェルの場合、アプリケーション レベルで権限情報を確認し、情報に従ってさまざまなビュー アクセス ボタンに可視性バインディングを設定します。
  4. 個々のビューについて、ビューモデル レベルで権限情報を確認し、情報に従ってアクション ボタンへの可視性バインディングを設定します。

そのようなシナリオを実装するためのより良いアプローチはありますか?

4

1 に答える 1

1

ボタンなどのいくつかのUI要素を非表示にすることに加えて、実際に実行する前に、ViewModelレイヤーで現在のユーザーが操作を実行できるかどうかを確認することを除けば、あなたのアプローチは私にはほとんど問題ないように思えます。

これは、パーミッション検証ロジックを通過し、trueまたはfalseを返すがCommands必要であることを意味します。CanExecute()UIElementsは、Snoopなどのツールを使用して実行時に簡単に変更できるため、これは重要なセキュリティ対策であるIMOです。この回答を見てくださいwpfアプリケーションをスヌーププルーフする方法は?

于 2012-11-09T22:33:05.213 に答える