我有一个不寻常的情况,我需要有一个特殊的路由前缀,处理身份验证与正常情况有很大不同。基本上,对此路由前缀的任何请求都在“isAuthorized”(在app控制器上)中具有权限,并且布局设置为此连接的特殊布局。到目前为止,以下工作正常:
if(isset($this->params['special']) && $this->params['special'])
{
$this->layout = 'special';
return true;
}
除此之外还需要发生的是,每次发出请求时,都会针对数据库检查密钥/令牌组合是否存在有效条目。如果条目无效,我需要使用特殊布局仅输出“Invalid key / token combo”。如果条目有效,它将正常进行。
在哪里放置此检查的适当位置,以便检查该路由前缀上的所有连接,以及如何在发生故障时仅发送该文本?有没有办法更改路由,以便在身份验证失败时使用不同的控制器和视图?
答案 0 :(得分:0)
啊,现在我想我明白了。
您希望在每个操作之前运行检查,以查看传递令牌/密钥的参数是否有效。
这将在你的控制器中在beforefilter函数中完成。
public function beforeFilter()
{
if(!isset($this->params['special']))
{
$this->render('fail_view');
exit;
}
}
在这里,您可以对传递的参数进行检查,如果验证失败,则可以使用您想要的任何文本呈现自定义视图,然后退出脚本的其余部分。