4

我正在使用推荐的新应用程序结构在 Ext JS 4 上开发一个 Web 应用程序。因此,我需要实施一个身份验证和权限系统。到目前为止的想法:

  1. 服务器负责确保用户角色和权限。
  2. ExtJS 前端必须根据权限和角色进行更改
  3. 我使用卡片布局。第一个选项卡是登录屏幕,第二个选项卡是应用程序
  4. 在我的控制器中,我检查用户是否已登录。如果他有有效身份,我切换到选项卡 2。如果没有,他将返回选项卡 1。

我现在的问题是我不确定第 2 部分和第 4 部分?你将如何实现这两个?

4

2 回答 2

3
  • 一旦用户通过身份验证,将配置选项从服务器带到商店。例如:Ext.StoreManager.get('ConfigOptionStore').loadData(/* config data returned from server */);
  • 使用该beforeRender事件将组件添加到当前视图(在控制器中执行此操作),如下所示:

    init: function() {
        this.control({
            'myPanel': {
                beforerender: function(cmp, eOpts){
                //place the store in a var for easy access
                var myConfigStore = Ext.StoreManager.get('ActiveUserStore').getAt(0);
    
                //from here you can use add() to add stuff like so:
                if (myConfigStore.get('hasMyButton')) {
                    cmp.add({
                        xtype: 'button',
                        text: 'My Button',
                        action: 'doSomething'
                    });
                 }
                 //etc...
             }
         });
    }
    
  • 确保在任何给定时间,使用当前配置选项更新商店的第一条记录(当您loadData加载时,只加载一条记录)。

  • 这应该让您朝着正确的方向开始。只需确保仅使用最基本的组件创建初始视图,然后根据用户的配置添加自定义组件。

于 2011-10-03T17:56:35.317 回答
1

您可以根据用户 ID 从服务器发送唯一的用户“配置”文件,因此每个用户都有自己想要的配置设置,也可以在更改后使用 StateManager 保存用户配置。这样前端将根据权限和角色而变化。对于第 4 部分。我没有看到任何问题,如果您决定使用卡片布局...

setActiveTab( String/Number/Ext.Component card )

编辑:

您可以使用getState(); 从 Ext.AbstractComponent 中检索“状态”并保存,因此在下一次加载时初始化此状态。这不依赖于 Cookie 或本地存储,因此不会过期。您可以在用户完成自定义视图后让他有机会保存状态。

于 2011-10-03T12:51:25.600 回答