wpf - 向应用程序用户提供受限权限的方法

标签 wpf desktop-application privileges user-accounts restriction

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

要求是管理员用户将为运算符(operator)分配一些受限制的权限,这些权限将指定 -

  • 哪些运算符(operator)可以访问/打开哪些 View ,以及
  • 哪些运算符(operator)可以在允许的 View 中执行哪些操作

  • 到目前为止,我的想法是——
  • 在数据库中存储运算符(operator)权限信息
  • 加载时,将当前登录用户的权限信息存储在某个应用程序级别
  • 对于 Shell,检查应用程序级别的权限信息,并根据信息
  • 将可见性绑定(bind)设置到不同的 View 访问按钮
  • 对于单个 View ,在 ViewModel 级别检查权限信息并根据信息
  • 设置操作按钮的可见性绑定(bind)

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

    最佳答案

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

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

    关于wpf - 向应用程序用户提供受限权限的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148419/

    相关文章:

    sql - 在 Oracle 中创建唯一/主键约束所需的权限是什么?

    database - Zend Framework 动态 ACL 具有特殊权限,具体取决于数据库条目

    WPF 控件模板与用户控件

    WPF 删除列表框底部的额外空间

    c# - 在网络和桌面应用程序之间进行通信的好方法

    javascript - 在 Javascript 中可以删除特权吗?

    wpf - 简单注入(inject)器 WPF 无效 uri

    wpf - 我应该在后台线程中运行所有内容吗?

    c# - 如何获取 Windows 应用商店应用程序的本地化显示名称

    c# - 我怎样才能打开一个文件,使其长度应该是 94 的倍数