2011-09-29 41 views
3

我已经在我公司现有的站点中使用CakePHP建立了一个工作ACL系统。访问限制是完美的,没有访问网站特定部分的权利的团体和单个用户会收到authError消息,说明他们没有适当的权利。CakePHP:带有ACL的假阳性authError

唯一的问题是,在Firefox中,我有时会得到 - 我想打电话 - 误报。这意味着,即使用户有权访问某个控制器和操作,authError仍会弹出。奇怪的是,视图仍然呈现正确,除了authError没有任何错误。一切正常,用户可以看到他们需要看到什么。只有有时authError仍然显示。

现在这在Firefox中有时会随机出现,但在IE8中这种情况一直发生。即使用户可以完全访问整个站点,authError消息仍然显示在IE8的每个页面上。我没有检查过,如果这个问题在其他IE浏览器中仍然存在,但是既然它发生在IE8和FF中,我的想法是它们可能也存在于其他IE浏览器中。

现在我无法理解为什么会发生这种情况,因为这里没有真正的模式。在FF中,authError随机给出了一个误报,而在IE8中它只是一直显示。

有人可能会争辩说,出于某种原因,用户权限在authError消息被给出'去'出现后被检查。即使已显示错误消息,也会导致适当的访问。我已经检查过这个页面的加载时间是否与它有关,但这似乎并不是这样。

是否有用户在附近有什么想法可能是这个问题的原因?提前致谢!

+0

我会检查您的网页中是否有一些内容试图访问受保护的URL(我想到一个Ajax请求,指向受保护操作的图像的错误URL等)。它将在会话中设置一个Auth错误消息,该消息将在下一页加载时显示。 Firefox和IE之间的区别可以通过不同的缓存策略来解释。 – nIcO

回答

0

我不完全确定为什么发生这种情况,我不知道你是否能够找出你的问题。然而,我也在运行ACL,并且有类似的问题,我会在这里发布它,希望能帮助某人。

我有一个文章控制器,我需要indexview行动公开。不管我做了什么,没有任何工作。我仍然会得到相同的not authorized error。经过许多不眠之夜的尝试和尝试之后,我发现,虽然我要求动作view,但在视图动作中引用的任何其他操作(如getRelatedgetComments)也必须添加。

问题已修复,或者我想。但是,间歇性地,错误会一次又一次地弹出。同样的问题,同样的错误。现在,我能够访问查看操作,但不能访问索引,虽然一切似乎都很好$this->Auth->allow

经过多次头痛之后,我发现我必须对我的类别控制器执行相同的操作。在此控制器中,我创建了一个getRelated操作,可根据其类别检索与特定文章相关的所有文章。

只要我这样做,现在我所有的问题都消失了,我还没有遇到类似的问题。现在我实际上可以集中到我的项目的其他部分。