Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP-站点脱机-管理员路由不工作_Cakephp_Admin_Authentication - Fatal编程技术网

CakePHP-站点脱机-管理员路由不工作

CakePHP-站点脱机-管理员路由不工作,cakephp,admin,authentication,Cakephp,Admin,Authentication,我在我的app_controllers.php文件中设置了以下代码,以控制当站点设置为脱机(site_status=0)时对站点的访问 当请求的地址如下所示时,一切都很正常: http://www.mydomain.com/articles 但是,当我有以下情况时,它不能正常工作 http://www.mydomain.com/admin/articles 它阻止正确访问站点,但无法使用$this->layout='offline'。它默认返回到默认布局 我需要做些什么来解决这个问题 谢谢大

我在我的
app_controllers.php
文件中设置了以下代码,以控制当站点设置为脱机(site_status=0)时对站点的访问

当请求的地址如下所示时,一切都很正常:

http://www.mydomain.com/articles
但是,当我有以下情况时,它不能正常工作

http://www.mydomain.com/admin/articles
它阻止正确访问站点,但无法使用
$this->layout='offline'
。它默认返回到
默认布局

我需要做些什么来解决这个问题


谢谢大家!

首先我觉得不合适的是:

(!$this->Auth->user() == null)
这看起来非常错误,可能会导致您的问题。我建议将其改为:

(!is_null($this->Auth->user())

编辑

。您在
$this->Auth->user()
的返回值后面追加了
NOT
语句。因此,当用户登录时,您实际上是在询问
false
是否等于
null
,这当然不是,也永远不会是


。您不想检查
$this->Auth->user()
的值是否等于
null
,而是想检查
$this->Auth->user()
的数据类型是否等于类型
null
。简言之如果您只需要在If语句中使用“=”,那么您需要使用相同的
==
检查或相同的not检查
==

如果
的情况看起来很奇怪,你的
。它们是:

如果站点脱机且用户登录
使用默认布局
否则
使用脱机布局并要求在所有页面上进行身份验证

也就是说,当站点在线或用户未登录时,您正在使用脱机布局。你确定这就是你想要的吗?

我认为所有这些表达式,包括我代码中的表达式,都代表了相同的东西。不管怎样,我已经试过你的第一个建议
!为空($this->Auth->user())
而我的代码仍保持相同的行为。我相信这就是Auth处理admin路由前缀的方式,但不知道如何修复它。你还有什么建议吗?我得去上班了。如果在我下车之前没有人回答你,我会详细说明我的答案。我会在我的问题中很快发布更多的代码,但是,我的想法是向所有未经验证的用户显示该网站为脱机。但是,如果站点标记为脱机,但用户已通过身份验证,则我们将使站点可用。我还没有完全实现ACL,但我的想法是允许管理员访问该站点,即使它处于脱机状态。
(!is_null($this->Auth->user())
($this->Auth->user() !== NULL)