MVVM はバインディングとコマンドに基づいています。IsEnabled
、IsReadOnly
、Visibility
およびコマンドのバインドが、CanExecute
パーミッションを考慮した GUI の実装に役立つことを理解しています。
しかし、私はこのアプローチに疑問を持っています。
1 つ目は、VM の各 ACL ロジックに関連するプロパティにCanRead
|を付ける必要があることです。CanWrite
対応するコントロールにバインドできるプロパティ。これは、多くのインフラストラクチャ コーディングとバインディングの XAML タイピングを意味します。理由を説明する動的ツールチップもリストに追加できます。
2 つ目は、XAML での入力ミスにより、特に読み取りアクセス許可に関してセキュリティが損なわれる可能性があることです。コントロールは表示されたままになります。この問題は、ほとんどの場合 (すべてではない)、プロパティにデフォルト値を残す Busines Logic レイヤーによって解決できます。しかし、「帰り」(VM->BL)では、システムは許可されたプロパティのみを気にする必要があります。
セキュリティは分野横断的な懸念事項と呼ばれています。インターセプトを使用した AOP または DI が BL レベルでのセキュリティにどのように役立つかは理解していますが、MVVM 設計パターンのコンテキストで GUI にこれらすべてを実装することについては良い考えがありません。
この問題を解決した経験を教えてください。