我已经在公司现有的站点中用cakephp建立了一个工作的acl系统。访问限制非常有效,没有权限访问网站特定部分的组和单个用户将收到一条autherror消息,说明他们没有适当的权限。
唯一的问题是在firefox中我有时会得到-我想称之为-误报。这意味着,即使用户可以访问某个控制器和操作,autherror仍然会弹出。奇怪的是,视图仍然正确地呈现,除了autherror没有任何错误。一切正常,用户可以看到他们需要看到的东西。只有在某些情况下仍然显示autherror。
现在,这种情况在Firefox中有时会随机发生,但在IE8中,这种情况一直都在发生。即使用户拥有对整个站点的完全访问权,autherror消息仍然显示在ie8中的每个页面上。我还没有检查这个问题是否在其他IE浏览器中持续存在,但由于它同时出现在IE8和FF中,我的想法是,它们也可能存在于其他浏览器中。
现在我不明白为什么会这样,因为这里没有真正的模式。在ff中,autherror随机地给出一个假阳性,而在ie8中它只是一直显示。
有人可能会说,由于某种原因,在autherror消息被赋予“go”后,用户权限会被检查。即使已显示错误消息,也能正确访问。我已经检查过页面的加载时间是否与此有关,但似乎不是这样。
周围有没有用户知道这个问题的原因?提前谢谢!

最佳答案

我不完全清楚为什么会这样,我也不知道你是否能解决你的问题。不过,我也在运行acl,并有一个类似的问题和图,我会张贴在这里,希望能帮助别人。
我有一个文章控制器,我需要indexview操作公开。不管我做了什么,都没用。我还是会得到同样的not authorized error。经过无数个不眠之夜的尝试,我发现,尽管我正在请求view操作,例如,视图操作中引用的任何其他操作,如getRelatedgetComments也必须添加。
这个问题已经解决了,或者我是这么想的。但是,间歇性地,错误会一次又一次地出现。同样的问题,同样的错误。现在,我可以访问视图操作,但不能访问索引,尽管使用$this->Auth->allow似乎一切都很好。
经过更多的挠头,我发现我必须做同样的分类控制器。在这个控制器中,我创建了一个getRelated操作,该操作将根据特定文章的类别检索与该文章相关的所有文章。
一旦我这样做了,现在我所有的问题都消失了,我没有经历过类似的问题。现在我可以专注于我项目的其他部分了。

10-01 15:34