【问题标题】:MVVM and Role Based SecurityMVVM 和基于角色的安全性
【发布时间】:2011-02-05 12:32:09
【问题描述】:

我有一个 Silverlight 应用程序 (MVVM),其视图将由应用程序中的多个角色使用,视图中某些 ui 控件的可访问性取决于用户角色。这应该如何在视图模型中进行管理?有没有我应该考虑的对象模式?

任何想法/指导将不胜感激。

【问题讨论】:

    标签: c# mvvm silverlight-4.0


    【解决方案1】:

    想到的第一个想法是在您的 ViewModel 中具有与当前用户是否具有执行某些操作的能力相对应的属性。例如:

    public bool CanChangeDisplayName {
        get {
            bool result = SomeMechanismToDetermineUsersAbilityToPerformAction();
            return result;
        }
    }
    

    然后您可以将视图上相应控件上的IsEnabled(或IsReadOnlyVisibility)属性绑定到此属性。喜欢:

    <TextBox IsReadOnly="{Binding CanChangeDisplayName}" Text="{Binding DisplayName}"/>
    

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      特定于角色的视图部分可能在某种容器(网格、堆栈面板、tabitem 等)中,如果是这种情况,那么我认为您的解决方案将取决于您为 Visibility 属性设置的绑定.

      您将创建一个应用程序范围的静态资源,以方便当前用户调用 IsInRole。在您的绑定中,您必须引用一个转换器(从 bool 变为可见性),并且在那里您可以传递您正在测试的角色的名称。

      【讨论】:

      • 我不同意关于更改可见性的一点。在某些情况下可能是合适的,但不是一般规则。例如,如果用户具有只读访问权限,您可能不希望向用户隐藏包含发票行项目的网格 - 用户根本看不到它们!
      猜你喜欢
      • 2013-03-21
      • 2011-05-12
      • 1970-01-01
      • 2012-03-18
      • 2019-03-13
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多