- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 Zend Framework 的新手。我是在我仍在为学校做的一个项目中开始学习它的。我对如何处理 ACL 和我的模块化结构(我真的很喜欢)有点困惑,并且在互联网上进行的研究似乎没有提供我需要的信息。不过,这可能是因为我对框架还不是很有经验,但我仍然认为我会在这里问。提前致谢!
目前,根据我研究的大多数最佳实践,我创建了一个模块化结构,如下所示:
application/
modules/
admin/
default/
我使用一个插件来控制我的 ACL,就像这样(为了简单/可读性,我只添加了一个分数):
$acl = new Zend_Acl();
$acl->addRole(new Zend_Acl_Role('guest'))
->addRole(new Zend_Acl_Role('member'), 'guest');
->addRole(new Zend_Acl_Role('admin'), 'member');
$acl->addResource(new Zend_Acl_Resource('index'));
->addResource(new Zend_Acl_Resource('admin:index'));
$acl->allow('guest', 'index', array('index'));
->allow('member', 'index', array('userpanel'));
->allow('admin');
无论如何,ACL 在默认模块上都可以正常工作 - 即使在管理模块上也是如此,但是当我有相同的 Controller 名称和操作时就会出现问题,例如:
This action will allow users to edit their own account
Module: Default
Controller: User
Action: Edit
This action will allow an admin to edit any account
Module: Admin
Controller: User
Action: Edit
当我像这样在 ACL 中设置规则时:
$acl->allow('member', 'user', array('edit'));
用户也将被允许访问用户 Controller 上的管理员编辑页面。我如何告诉 ACL 模块之间存在差异?我见过许多示例在将资源添加到 ACL 时使用“admin:user”而不是“user”作为 Controller /资源名称。但是,当 Controller 和/或操作名称相同时,这似乎不起作用。
所以 - 最大的问题是:在我目前的情况下我该如何解决这个问题,或者你会建议我如何构建我的应用程序来避免这个问题?我宁愿不求助于使用额外的 Controller 前缀,如“Admin_AdminUserController”,或者只是一起删除模块,只制作“adminEditAction”等。
最佳答案
我也对其他人所说的感兴趣,但我想我会为您提供一个可能的解决方案。
在我当前的项目中,我为默认(最终用户)模块和管理模块使用了单独的 ACL。除此之外,对于管理模块,我扩展了 Zend_Auth 并将其设置为使用不同的 session namespace (Zend_Auth_admin),因此用户登录与管理员登录完全隔离。一个人可以同时作为用户和管理员登录,因为它使用两个不同的 Zend_Session 命名空间。
也就是说,我们在用户 ACL 中仍然具有管理员角色,因为我们允许管理员用户从管理员模块登录到任何用户帐户(我们的用户帐户中没有个人/敏感信息)。
同样在我们的案例中,当管理员和用户 ACL 分开时,阅读和理解 ACL 会容易得多,因为管理员 ACL 有很多规则,并且一些逻辑与用户 ACL 完全分开。
这在您的项目中可能是也可能不是有用的方法,但我认为我会把它放在那里作为一种可能性。祝你好运!
关于php - 在具有相同 Controller 名称的模块化结构化应用程序中实现 Zend_Acl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713234/
每个人(希望)都在努力实现代码模块化。我想要做的是有 1 个主要的 Sass 文件,它导入我的所有模块,这些模块是局部的,如果需要,这些局部可以调用它们自己的局部组。我想要的是,不是在我的代码库中调用
如何在 xslt 转换中模块化一组重复的输出?例如,我有如下内容(伪代码)。 并
假设我有几个简单的模型驻留在 food.py 中: import peewee as pw db = pw.SqliteDatabase('food.db') class BaseModel(pw.M
我正在开始一个新的 Angular 项目并尝试模块化我的所有代码——我厌倦了拥有大量的 app.js 文件,而且因为我正在为一家公司开发一个平台,所以我的代码整洁且模块化以便于测试、清洁和易于过渡到
所以,有人告诉我,在 nodeJS 中传递 request 和或 response 变量是“不好的做法”。但这意味着你的大部分代码都必须在 server.js 文件中,这使得它变得困惑而且有点难看。
有一个想法:函数(在 FP 中)可以以与 OOP 中的组件类似的方式组成。对于 OOP 中的组件,我们使用接口(interface)。对于函数,我们可以使用委托(delegate)。目标是实现分解、模
有没有办法将 SQL 代码模块化,使其更具可读性和可测试性? 我的 SQL 代码经常变成一长串复杂的嵌套连接、内连接等,难以编写和调试。相比之下,在像 Javascript 或 Java 这样的过程语
我想知道大公司如何倾向于在他们的页面上模块化组件。 Facebook 就是一个很好的例子: There's a team working on Search that has its own CSS,
我正在寻找在 WPF 中构建模块化应用程序模型的解决方案。目前,我使用 Devexpress POCO MVVM 来构建我的 WPF 应用程序,但缺乏模块化的可扩展性,我正在寻找适合我当前设计并允许构
我制作了一个 Gradle 项目,它使用类加载器从子目录资源/文本中加载文本文件。此时它可以工作,但是当我将项目转换为模块化 JavaFX 程序时,相同的类加载器函数会给出 NullPointerEx
假设我有一个通用类模块: export class MyCalc { data = {} ... } 并说我想扩展更多功能: export class MyCalcLoader {
我的模板文件变得越来越大并且过于复杂(大约 200 行(长)代码,9 级缩进),因此它也变得容易出错。我正在寻找一个简单的解决方案,它可以让我轻松访问 $scope 变量和函数。 我的第一个想法是使用
许多人说要将外部 CSS 和 JavaScript 文件的数量保持在最低限度以减少往返时间。例如,Google 建议每个网站最多分别使用两个 CSS 和 JavaScript 文件。 问题是,作为“模
我试图找出为什么我的 Promise 链执行无序,尽管编写了一个非嵌套的 then 链。我的函数已经模块化,以减少链中发生的代码膨胀(我期望有五个 then 方法),并且我不确定这些模块中的某些内容是
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 8 年前。 Improv
我使用 create-react-app 创建了一个样板 React 应用程序。 现在,在我的 App.js 文件中 import classes from './App.css'; 我做到了
Java 模块系统是否应该阻止模块通过反射访问其他模块,而不声明正确的模块依赖关系? 例如,在编译这个 hello world Java 11 类时,它从另一个模块调用类,正如预期的那样,它不会编译,
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 9 年前。 Improve this qu
我的应用程序上有许多不同的“控制元素”:下拉菜单、选项卡、菜单等。在同一页面上,有许多相同的控件。当编写 JavaScript 来处理与每个控件关联的不同事件时,我试图使我的代码尽可能干燥。挑战之一是
处理以下场景的模块化方式是什么:应用程序具有所有标题标签(h1、h2、h3 等)的通用样式。特定组件 Widget.jsx 可以使用这些标题中的任何一个,但 h1 标签具有特殊样式。在 CSS 的“旧
我是一名优秀的程序员,十分优秀!