在我的应用程序中,我希望根据角色为不同用户实现多访问级别。我正在openUI5中开发应用程序。当我登录应用程序时,我知道用户拥有什么角色。根据这些角色,我想显示或隐藏某些链接,瓷砖,gui组件。
多访问级别我的意思是
点数2.我已经实现了。这没问题 - 根据角色,我将特定路线添加到允许的路线。
我很感激第1点的建议。最佳做法是什么?
谢谢
答案 0 :(得分:0)
根据用户的角色(一组授权规则),您可以通过以下方式控制UI:
如果UI根据用户角色应该非常不同,那么为每个角色甚至应用程序创建不同的视图集是有意义的。
如果没有太大差异,您可以设置配置JSON模型,该模型将包含特定UI元素的可见性规则,您将“可见”属性绑定到此配置模型。甚至可以从后端获取一组规则,因此它不会是UI上的硬编码,这非常适合自定义原因。
也可能是这种情况(通常在我的项目中),不仅用户角色会影响UI的状态,而且对象的状态或业务逻辑应该定义UI的外观。我正在谈论类似的事情:
在这种情况下,通过使用所谓的“字段控件”让后端控制更容易。它们是OData实体类型(需要时)的简单属性,它包含UI的规则。
例如,在您的实体类型中,您有“Amount”字段,在某些情况下,它应该是只读的,而在某些其他情况下,它是可编辑的。所以你需要添加一个字段控件“UxFc_Amount”,它应该是整数类型并包含0,1或2:
0 - 表示字段应完全隐藏
1 - 表示字段应为只读
2 - 表示字段应该是可编辑的
然后绑定适当的控件属性,即输入控件:“editable”,“visible”,“enabled”。
对于按钮,您可以引入“操作控件”。假设您有一个绑定到整个页面的“标题”对象,并且根据用户的角色和内部对象状态/状态,“提交”按钮应该可用。所以你引入“UxAc_Submit”属性是一个“布尔”(Edm.Boolean)并将按钮的“可见”属性绑定到这个变量,如果它是假的 - 按钮将被隐藏。 / p>
可以使用相同的方法在UI上显示/隐藏整个部分(例如,当您使用ObjectPageLayout控件时)。