开发者

Kohana 3: Prevent a controller action which renders a sub-view from rendering if not called from approved controller

Let's say I have the do开发者_StackOverflowmain www.example.com

It has a default controller called 'account'.

This controller is based on a template, and creates a view using it's data, and the result of a couple of other controller's renderings.

Let's call the other controllers, 'game', and 'stats'.

These 'sub-controllers' call View::factory with their own model data, and then the whole thing is rendered for the user.

I don't want people to be able to enter in to the browser www.example.com/game or www.example.com/stats and see the sub-controller's views rendered without the template of the main 'account' controller template.

What's the best way to do this, or adjust my structure to do it.


You can analize if your request main or its just a subrequest:

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

But if you want to use Ajax calls to update some blocks, you should add Request::$is_ajax check.


http://kerkness.ca/wiki/doku.php?id=routing:differ_request_for_internal_and_external

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜