0

我有一个不寻常的情况,我需要一个特殊的路由前缀来处理与正常情况截然不同的身份验证。基本上,这个路由前缀上的任何请求都在“isAuthorized”(在应用程序控制器上)中被赋予了权限,并且布局被设置为这个连接的特殊布局。到目前为止,以下工作正常:

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

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

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

4

1 回答 1

0

啊,现在我想我明白了。

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

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

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

在这里,您可以检查正在传递的参数,如果它们未通过验证,那么您可以使用您想要的任何文本呈现自定义视图,然后退出脚本的其余部分。

于 2012-07-22T08:59:57.160 回答