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

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

【问题讨论】:

    标签: extjs extjs4 extjs4.1 extjs4.2 extjs-mvc


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多