extjs4 mvc 中基于角色的视图

Posted

技术标签:

【中文标题】extjs4 mvc 中基于角色的视图【英文标题】:Role based views in extjs4 mvc 【发布时间】:2013-02-18 00:24:28 【问题描述】:

我的应用程序对不同的角色(例如(管理员或标准用户))有不同的视图。我不知道如何使用 extjs4 MVC 实现它。 extjs4 文档的示例认为应用程序只有一个角色,如标准用户,因此他们创建了一个 app.js 文件来管理应用程序,但如果应用程序有很多角色,我不知道如何为不同的用户实现不同的视图。 一个问题是我在应用程序中有两个 app.js 文件,在我获得服务器中的用户角色后,我加载适当的 app.js 文件以使用适当的视图、控制器、模型、商店等。 这件事是真的吗?

【问题讨论】:

【参考方案1】:

这是一个相当标准的问题,出现了很多次,答案总是一样的:

访问控制属于服务器,用户无法对其进行操作 不要向无权访问的用户提供视图/模型/控制器

考虑到这一点,您拥有一个应用程序还是十个应用程序并不重要。

因为访问控制不属于前端,所以在 ExtJS 中没有实现。

更新 -> 隐藏 UI 元素

一种准备就绪的方法是使用Ext.direct。这为应用程序提供了一个 API,该 API 可以根据当前用户的自定义访问权限进行修改,然后可以由前端进行检查。

方法:

根据用户会话创建 API 并在客户端检查

if(Booking) 
   if (Booking.Create) 
       // has access
   

或者一行


    xtype: 'button',
    hidden: !(Booking && Booking.Create)

这只是一个简单的例子,这很容易做到!

更新 这个Link 帮助了操作

【讨论】:

我从您的回答中注意到,我的服务器端应用程序应该有两个 app.js 文件。是真的吗? @taher 如果您只有两个角色,那将是一个选择。但是如果你有更多的角色,你可能需要重新考虑你的设计。含义:您可能无法仅使用预编译的库。您的服务器将只需要将特定的库分发给具有适当访问权限的用户,或者在用户登录时将它们组合起来,或者提供完整的应用程序来隐藏用户无权访问的部分的 UI 元素。 谢谢,如果应用程序有更多的角色,你能举个例子来说明隐藏用户无权访问的部分的 UI 元素吗? 感谢@sra 的回答,但我不知道您的代码中的预订是什么!你能解释一下吗? @taher 这是一个示例 API

以上是关于extjs4 mvc 中基于角色的视图的主要内容,如果未能解决你的问题,请参考以下文章

Extjs4 MVC、Ext.define() 和 Ext.create()

如何在 extjs4 的网格中显示关联的 json 数据?

在 ExtJS 4 MVC 中查看单元

Ext JS 4 - 如何在视图中显示其他视图?

extjs4.1 文本字段 dblclick 事件在 mvc 中不起作用

ExtJs4学习MVC中的Model