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()