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

时间:2012-07-22 01:23:17

标签: cakephp url-routing cakephp-2.1

我有一个不寻常的情况,我需要有一个特殊的路由前缀,处理身份验证与正常情况有很大不同。基本上,对此路由前缀的任何请求都在“isAuthorized”(在app控制器上)中具有权限,并且布局设置为此连接的特殊布局。到目前为止,以下工作正常:

if(isset($this->params['special']) && $this->params['special'])
{
    $this->layout = 'special';
    return true;        
}

除此之外还需要发生的是,每次发出请求时,都会针对数据库检查密钥/令牌组合是否存在有效条目。如果条目无效,我需要使用特殊布局仅输出“Invalid key / token combo”。如果条目有效,它将正常进行。

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

1 个答案:

答案 0 :(得分:0)

啊,现在我想我明白了。

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

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

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

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