Kohana 3:防止控制器操作,如果未从批准的控制器调用,则渲染子视图

时间:2010-09-23 04:30:27

标签: php frameworks kohana-3 hmvc

假设我有域名www.example.com

它有一个名为'account'的默认控制器。

此控制器基于模板,使用它的数据创建视图,以及其他几个控制器渲染的结果。

让我们打电话给其他控制器,'游戏'和'统计'。

这些“子控制器”使用自己的模型数据调用View :: factory,然后为用户呈现整个事物。

我不希望人们能够进入浏览器www.example.com/game或www.example.com/stats并看到子控制器的视图在没有主“帐户”模板的情况下呈现控制器模板。

最好的方法是做什么,或调整我的结构来做到这一点。

2 个答案:

答案 0 :(得分:0)

您可以分析您的请求是主要还是只是子请求:

public function before()
{
   parent::before();
   if ($this->request === Request::instance()) 
   {
       // its a main request, throw an exception or redirect
   }
   else
   {
      // ok
   }
}

但是如果你想使用Ajax调用来更新一些块,你应该添加Request::$is_ajax检查。

答案 1 :(得分:0)