问题标签 [zend-acl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2084 浏览

zend-framework - Zend-Framework 如何使用 zend_acl 检测不存在的操作

我在这种情况下有问题

  • 访客被允许访问 Contoller索引和操作视图
  • 但是当他输入 url /index/view2 时,它应该将他重定向到错误页面,因为操作view2不存在
  • 但是这个条件说他被允许 olny 用于行动视图。所以它不是将他重定向到错误页面,而是访问被拒绝

如何解决这个问题?

0 投票
1 回答
964 浏览

jquery - Zend ACL - 如何通过 ajax/jquery 处理对受保护页面的请求

我有点卡在这里 - 我可以写一个黑客来解决这个问题,但想知道是否有合适的方法来做到这一点。

我正在使用 Zend ACL 来指定哪些页面受到保护并需要身份验证。例如,如果“UploadVideo.php”是一个受保护的页面 - 当用户单击链接以访问该页面时 - 他将被带到登录页面,并且在登录后被重定向回 UploadVideo.php 页面。所以这一切都得到了照顾并且工作正常。

现在在另一个页面上 - 我有一个类似“投票”按钮的东西。用户只有在登录后才能投票。

案例 1 当用户登录时 - 他点击投票按钮 - 我正在使用 Jquery 通过以下方式调用操作: $.post('/video/vote', {video_id:video_id}, function(data) { if(data=="OK") ..... } 现在 /video/vote 是受保护的资源,并且由于用户已登录 - 投票操作被调用这会增加投票计数并发送回“OK”消息,并且页面会使用新的投票计数动态更新。

案例 2 用户未登录 - 他点击投票按钮 - 因为页面受到保护 - 通过变量“数据”中的 ajax 调用返回登录页面 理想情况下,当用户未登录时 - ajax 调用应该不会发生 - 用户应该被重定向到登录页面 - 登录后他应该被重定向到 /video/vote 动作,这将增加投票计数 - 最后用投票按钮发送回页​​面

我该如何处理。我可以编写一些技巧并检查用户是否已登录,并根据此决定是否进行 ajax 调用或重定向用户,但这是最好的方法。

我不知道我是否已经清楚地解释了这个问题。

谢谢你的时间

0 投票
4 回答
2369 浏览

php - Zend_Auth 的多个实例(2)

我有一个基于 Zend 框架的 CMS。它Zend_Auth用于“CMS 用户”身份验证。CMS 用户具有使用Zend_Acl. 我现在正在尝试为诸如在线商店之类的东西创建“站点用户”。为简单起见,我想Zend_Auth为站点用户使用单独的实例。 Zend_Auth是作为单例编写的,所以我不确定如何实现这一点。

我不想通过角色来完成此任务的原因:

  1. 站点用户(访问者)对 CMS 用户的污染
  2. 站点用户可能会意外获得提升的权限
  3. 用户被更准确地定义为不同的类型而不是不同的角色
  4. 这两种用户类型存储在不同的数据库/表中
  5. 每种类型的一个用户可以同时登录
  6. 两种用户类型需要不同类型的信息
  7. 需要在现有代码上进行的重构
0 投票
2 回答
2851 浏览

zend-framework - Zend_ACL 如何获得角色?

在阅读了 Zend 文档和这里的一些帖子之后,我无法弄清楚如何从用户表中获取我的用户角色。

目前我在 AuthController 中像这样使用 Zend_Auth:

然后通过 Zend_Controller_Plugin 检查它并根据结果进行路由:

现在我想根据用户的滚动更改路线。如果用户是管理员,他可以访问 AdminController,但是如何从我的用户表中获取角色?该列称为类型,它包含一个字符串,表示角色。

我希望你能帮助我。

问候,

-lony

0 投票
1 回答
464 浏览

php - 如何在 Zend Framework 中合并几个 ACL?

我有几个Zend_Acl对象实例,比如这个(每个模块一个):

如何将它们合并为一个 ACL 对象以在导航容器中使用?

编辑

更多信息:

  • 我不使用控制器资源来支持基于模型的资源(模型、表单实现Zend_Acl_Resource_Interface)。都有方法isAllowed()
  • 我使用模块化目录和可重用模块(单独的模型、配置、路由等)
  • 我的应用程序知道所有已安装的模块、控制器、动作(结构已经解析,不是实时的)

所以我正在寻找遵循这个方案的方法,并将每个模块的 ACL 分开。我不想使用应用程序资源,因为它是一种浪费 - 并不总是需要 acl。

我有一个动作助手,它仅在真正需要时才实例化模块特定的 ACL。但有时我也希望全局应用程序 ACL 可用(例如,当我想将它传递给导航视图助手或控制器插件时)。

我的模块 ACL 类只有一种方法:init().
我看到的肮脏解决方案是解析源类并将文件合并为新类的一种方法。

有什么建议么?

0 投票
2 回答
563 浏览

ajax - Zend_Navigation、Zend_ACL + 角色没有通过 Ajax 请求正确过滤

我目前一直在我的项目中同时使用 zend_acl 和 Zend_Navigation,它似乎工作正常。我是如何在我的网站中使用大量 ajax 并使用 jqModal 和 jQuery 登录的,这些登录用户无需重新加载当前页面并且还需要重新加载导航。到目前为止,我已经让它工作了,但是返回的导航是所有可见字段为 true 的链接,这是不正确的。例如,当我以用户身份登录时,登录链接不应该是可见的。

任何帮助,将不胜感激。我在下面的 Action、JavaScript 函数和 Json 代码返回。

==================================================== ===== 当前角色 = 管理员

// 控制器动作

public function getnavigationjsonAction() { //$view->navigation($container)->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); // echo $this->navigation()->menu(); $navigation = $this->getView()->navigation()->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); //die(Zend_Registry::get('role')); //死($this->_acl); $this->_helper->json($navigation->toArray()); }

// 脚本函数

function reloadNavigationMenu() { //alert('重新加载导航'); $.ajax( { url : "/default/ajax/getnavigationjson", type : "POST", cache : false, async : false, data : "format=json", success : function(data) { var html='' ; 控制台.log(数据);

$.each(data, function(i) { if(data[i].visible === true) { //console.log(data[i]); html+='

  • '; html+=''+数据[i].label+''; html+='
  • '; } }); html+=''; $('#zend_navigation_container').html(html); } });

    }

    // 从控制器返回 JSON 数据

    [ {“action”:“index”,“active”:false,“class”:null,“controller”:“admin”,“id”:null,“label”:“Admin Section”,“module”:“ admin”,“order”:null,“pages”:[],“params”:[],“privilege”:“index”,“rel”:[],“reset_params”:true,“resource”:“admin :admin", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "索引”,“活动”:假,“类”:空,“控制器”:“索引”,“id”:空,“标签”:“主页”,“模块”:“默认”,“订单”:空,“页面”:[],“参数”:[], “特权”:null,“rel”:[],“reset_params”:true,“resource”:null,“rev”:[],“route”:null,“target”:null,“title”:null, “类型”:“Zend_Navigation_Page_Mvc”,“可见”:真 },{ “动作”:“索引”,“活动”:假,“类”:空,“控制器”:“索引”,“id”:空, “标签”:“新闻”,“模块”:“新闻”,“订单”:null,“页面”:[],“参数”:[],“特权”:“索引”,“rel”:[],“reset_params”:true,“资源”:“新闻” :index", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : " index”,“active”:false,“class”:null,“controller”:“index”,“id”:null,“label”:“Tutorials”,“module”:“tutorials”,“order”:null ,“页面”:[],“参数”:[],“privilege”:“index”,“rel”:[],“reset_params”:true,“resource”:“tutorials:index”,“rev”:[],“route”:null,“target”:null,“标题”:空,“类型”:“Zend_Navigation_Page_Mvc”,“可见”:真},{“动作”:“关于”,“活动”:假,“类”:空,“控制器”:“索引”,“ id”:null,“label”:“关于”,“module”:“default”,“order”:null,“pages”:[],“params”:[],“privilege”:“about”,“相对”:[],“reset_params”:真,“资源”:“默认:索引”,“rev”:[],“路由”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true },{ “action”:“comments”,“active”:false,“class”:null,“controller”:“index”,“id”:null,“label”:“Comments”,“module”:“default”, “order”:null,“pages”:[],“params”:[],“privilege”:“comments”,“rel”:[],“reset_params”:true,“resource”:“default:index” , "rev" : [ ], "route" : null,“目标”:空,“标题”:空,“类型”:“Zend_Navigation_Page_Mvc”,“可见”:真},{“动作”:“索引”,“活动”:假,“类”:空,“控制器" : "contact", "id" : null, "label" : "Contact", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege ":"index","rel":[],"reset_params":true,"resource":"default:contact","rev":[],"route":null,"target":null,"title “:空,”类型“:”Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "login", "active" : false, "class" : null, "controller" : "auth", "id" : null, "label" : "登录”,“模块”:“默认”,“订单”:null,“页面”:[],“参数”:[],“特权”:“登录”,“rel”:[],“reset_params”: true,“resource”:“default:auth”,“rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }, { "动作" : "注销",“active”:false,“class”:null,“controller”:“auth”,“id”:null,“label”:“注销”,“module”:“default”,“order”:null,“pages” “:[],“参数”:[],“特权”:“注销”,“rel”:[],“reset_params”:true,“资源”:“默认:auth”,“rev”:[], “路线”:空,“目标”:空,“标题”:空,“类型”:“Zend_Navigation_Page_Mvc”,“可见”:真}]注销”,“模块”:“默认”,“订单”:null,“页面”:[],“参数”:[],“特权”:“注销”,“rel”:[],“reset_params”: true,“resource”:“default:auth”,“rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]注销”,“模块”:“默认”,“订单”:null,“页面”:[],“参数”:[],“特权”:“注销”,“rel”:[],“reset_params”: true,“resource”:“default:auth”,“rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]

    这是我当前以管理员身份登录的时候,登录链接应该被隐藏但它不是。看起来 ACL 没有正确分配给导航。

    0 投票
    2 回答
    209 浏览

    zend-framework - 需要建议设置 Zend_Acl

    假设我有类/模型

    • 项目(有很多列表)
    • 列表

    我想只允许作为项目合作者的用户能够添加列表。我怎么做。我知道我应该使用Zend_Acl_Assert,但是我应该将什么作为资源传递。对于编辑/删除,我将传递列表本身。对于添加,它似乎更像是一个项目。ListsController#addAction()如果我移动到哪个看起来更正确ProjectsController#addListAction()?这是1种可能

    但是,如果我想做一些类似的事情,ListsController#addAction()我该如何设置我的 acl?

    将“列表”作为资源传递。我可以以某种方式传递一个项目对象吗?这似乎没有意义

    0 投票
    2 回答
    2026 浏览

    php - PHP MySQL Zend-ACL - 以图形方式显示 ACL:

    我有一个如下的 MySQL 数据库表,即资源表


    在下一张表上,规则表


    好的,抱歉篇幅太长,但我试图全面了解我正在尝试做的事情。所以它的工作方式,一个角色(又名用户)可以被授予 (规则:1)访问控制器,一个角色可以继承 (规则:3)从另一个角色或角色访问并被拒绝 (规则:2)访问到控制器。用户是资源,控制器是资源)

    使用 extras 列授予/拒绝访问操作。

    这一切都有效,在 zend 中设置 ACL 不是问题。


    我现在要做的是展示关系;为此,我需要找到一个角色被授予访问控制器的最低级别,如果它已被明确删除。我计划列出角色。当我单击一个角色时,我希望它显示该角色有权访问的所有控制器。然后单击控制器会显示允许该角色执行的操作。

    因此,在上面的示例中,访客可以查看索引控制器的索引操作以及登录操作。成员继承相同的访问权限,但随后被拒绝访问登录操作和注册操作。版主继承成员的规则。

    因此,如果我要选择角色版主。我想查看列出的控制器索引。如果我单击控制器,它应该将允许的操作显示为操作:索引。(最初授予客人,但此后没有被拒绝)

    有没有这样做的例子。我显然正在使用 Zend MVC (PHP) 和 MySQL。即使只是一个 persudo 代码示例也是一个有用的起点——这是我正在拼凑的拼图的最后一部分。

    PS显然我有 ACL 对象 - 是更容易查询它还是通过 PHP/MySQL 自己做更好?

    目的是,显示角色可以访问的内容,然后允许我以 GUI 样式添加或编辑角色、控制器和操作(这有点容易) - 目前我正在手动更新数据库建设网站。

    0 投票
    2 回答
    583 浏览

    zend-framework - Zend ACL - 日志文件中的异常错误

    这有点奇怪,因为我在我的日志文件中看到了这些错误,并且没有一个对应于我拥有的任何资源。事实上,我什至不认识错误文件中显示的任何这些资源

    资源 res、fcs、open 或 2127250264.html - 这些不是我的应用程序中的资源 - 所以我不确定这些错误是什么意思。

    任何人都可以阐明我如何进行调试。


    编辑


    这是我定义资源的类

    0 投票
    1 回答
    970 浏览

    zend-framework - ACL 的 Zend_Test 和控制器插件(重定向)

    我怀疑在 Zend Test 中使用控制器插件时重定向存在问题?

    我有一个控制器插件,例如http://pastie.org/1422639我已经放置了 echo 语句进行调试。如果用户未登录,我有重定向到登录的代码

    我发现在单元测试时,例如

    我得到的输出是

    项目(好的,我请求了项目页面/控制器),没有 id(好的,我没有登录),得到了 redir(我得到了重定向器 ok),重定向(它似乎正在重定向 ok ...),错误(但是我到了错误控制器)没有资源,

    我进入错误控制器的原因似乎是我仍然进入项目/索引页面。在索引操作中,我假设用户已登录。但是当它尝试获取登录用户时

    它失败 ...

    如何让重定向器在 Zend Test 中工作?或者也许它不是重定向器的问题?