我正在构建一个网站,为每个用户提供一个私人主页,其中包含他们可以看到的内容,但其他人却看不到。如果用户是页面的所有者,_menu处理程序中的回调允许访问,否则拒绝;一切都很好。
我刚刚修改了该页面,使其内容由一组方框组成,而不是一大包代码。内容正确地汇集在一起,但有一个问题:如果用户A查看用户B的私人页面,他会得到一个拒绝访问页面,就像他应该的那样。但是,仍然会调用这些块,并且它们的内容仍然会在页面上结束,这样用户A就可以看到用户B的私有内容。该页面也没有得到通常的“您无权访问此页面”。通常显示在“拒绝访问”页面上的消息。
我完全不知道为什么会这样。我可以通过为他们提供一些设计合理的“特定页面上的显示块”功能来阻止块运行,但仍然会发生一些事情(a)似乎不对,(b)我不明白。总之,这给我一个糟糕/有趣的感觉,关于网站的访问控制发生了什么,特别是与块相关的方式。任何人都可以提供任何见解吗?谢谢!
答案 0 :(得分:0)
您应该在钩子菜单中创建一个访问回调函数来进行访问检查。此外,即使您不渲染任何内容,也允许用户查看内容。由于这些块不是通过菜单回调创建的,因此它们会正常呈现。
供参考,请参阅:hook_menu