【问题标题】:Approach for providing restricted privilege to application users向应用程序用户提供受限权限的方法
【发布时间】:2012-10-20 08:22:25
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: wpf desktop-application privileges user-accounts restriction


    【解决方案1】:

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

    这意味着您的Commands 应该有一个CanExecute(),它通过您的权限验证逻辑并返回真或假。这是一项重要的安全措施,IMO,因为 UIElements 可以在运行时使用 Snoop 等工具轻松更改。 看看这个答案How to Snoop proof your wpf application?

    【讨论】:

    • 感谢您的回复。实际上,这正是我现在实施的方式。由于条件折叠可见性导致 UI 上的元素发生一些移动/跳跃,我们同意只禁用 UI 元素。因此,命令的可用性只能通过 CanExecute() 检查当前用户的权限来提供。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多