Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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_Url Routing_Cakephp 2.1 - Fatal编程技术网

Cakephp 如何使用前缀路由来检查该路由上的所有连接是否具有特定值,并在失败时返回一个简单的纯文本?

Cakephp 如何使用前缀路由来检查该路由上的所有连接是否具有特定值,并在失败时返回一个简单的纯文本?,cakephp,url-routing,cakephp-2.1,Cakephp,Url Routing,Cakephp 2.1,我有一个不寻常的情况,我需要有一个特殊的路由前缀,它处理身份验证的方式与正常情况非常不同。基本上,此路由前缀上的任何请求都在“isAuthorized”(在app controller上)中被授予权限,并且布局被设置为此连接的特殊布局。到目前为止,以下工作还可以: if(isset($this->params['special']) && $this->params['special']) { $this->layout = 'special';

我有一个不寻常的情况,我需要有一个特殊的路由前缀,它处理身份验证的方式与正常情况非常不同。基本上,此路由前缀上的任何请求都在“isAuthorized”(在app controller上)中被授予权限,并且布局被设置为此连接的特殊布局。到目前为止,以下工作还可以:

if(isset($this->params['special']) && $this->params['special'])
{
    $this->layout = 'special';
    return true;        
}
除此之外,每次发出请求时,都会根据数据库检查一个键/令牌组合,以查找有效条目。如果条目无效,我需要使用特殊布局仅输出“无效密钥/令牌组合”。如果条目有效,它将正常进行


在哪里放置此检查以检查该路由前缀上的所有连接是合适的,以及如何在发生故障时仅发送该文本?有没有办法更改路由,以便在身份验证失败时使用不同的控制器和视图?

啊,现在我想我明白了

您希望在每个操作之前运行检查,以查看传递的令牌/密钥参数是否有效

这将在控制器的beforefilter函数中完成

public function beforeFilter()
{
    if(!isset($this->params['special']))
    {
        $this->render('fail_view');
        exit;
    }    
}

在这里,您可以对传递的参数运行检查,如果验证失败,则可以使用所需的任何文本呈现自定义视图,然后退出脚本的其余部分。

好的,我可以执行检查密钥/令牌的逻辑方面的工作。我遇到的主要问题是如何在没有任何其他文本的情况下返回无效令牌消息。我有一个布局,除了内容之外不包含任何内容,但是我如何将该行提交给它,然后停止,这样它就不会试图处理路线的其余部分?@xtraorange我想我知道你想要知道什么,请检查我编辑过的答案。出于某种原因,这是在呈现一个空白页。我从来没有想到这会如此困难。我知道这是一种不好的做法,但我想也许我应该响应一个响应并退出?@xtraorange您需要创建视图fail\u view.ctp并将其与其他视图一起放入文件夹中。