4

我有一个在 WPF 中开发的桌面应用程序,它有几个视图显示为 Shell 的 MDI 子项。它不是以复合/模块化方法开发的。当应用程序打开时,所有视图都可以访问了。该应用程序有一个管理员用户和几个操作员。

要求是管理员用户将为操作员分配一些受限制的权限,这些权限将指定 -

  1. 哪些操作员可以访问/打开哪些视图,以及
  2. 哪些操作员可以在允许的视图中执行哪些操作

到目前为止,我的想法是——

  1. 在数据库中存储操作员权限信息
  2. 加载时,将当前登录用户的权限信息存储在某个应用程序级别
  3. 对于Shell,在应用程序级别检查权限信息并根据信息将可见性绑定设置到不同的View-access按钮
  4. 对于单个视图,在 ViewModel 级别检查权限信息并根据信息设置操作按钮的可见性绑定

有没有更好的方法来实现这种场景?

4

1 回答 1

1

你的方法对我来说听起来很不错,除了隐藏几个 UI 元素(如按钮)之外,我还会在实际执行操作之前检查 ViewModel 层中的当前用户是否可以执行操作。

这意味着您Commands应该有一个CanExecute()通过您的权限验证逻辑并返回 true 或 false 的方法。这是一项重要的安全措施,IMO,因为 UIElements 可以在运行时使用 Snoop 等工具轻松更改。看看这个答案如何窥探你的 wpf 应用程序?

于 2012-11-09T22:33:05.213 回答