Cakephp-3.0是否可以立即重定向?

Cakephp-3.0是否可以立即重定向?,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,所以对控制器::重定向进行了更改,现在它在调用控制器操作后激发。所以,如果您想在触发逻辑之前重定向某人(例如,未登录的人),这将不再可能。有人知道如何模拟旧的2.X行为吗?在这种行为中,对Controller::redirect的调用会立即停止一切并重定向 如果用户未登录,有三种可能的方法重定向用户。我是用我的一个应用程序做的。首先是使用控制器的beforeFilter()。你可以像 public function beforeFilter(){ parent::beforeFilter();

所以对控制器::重定向进行了更改,现在它在调用控制器操作后激发。所以,如果您想在触发逻辑之前重定向某人(例如,未登录的人),这将不再可能。有人知道如何模拟旧的2.X行为吗?在这种行为中,对Controller::redirect的调用会立即停止一切并重定向

如果用户未登录,有三种可能的方法重定向用户。我是用我的一个应用程序做的。首先是使用控制器的beforeFilter()。你可以像

public function beforeFilter(){
 parent::beforeFilter();
 if(empty($this->logged_in)){
   //your redirect code or your logic
 }
}
它在第一次调用控制器操作时执行。 其次,可以创建类的构造函数。它一开始也会执行

public function __construct( $request = null, $response = null ) {
    parent::__construct( $request = null, $response = null );
    //Your redirect code if user not logged in
}
您可以在AppController beforeFilter()中编写代码;但如果您只想阻止未登录用户访问某些函数,则应该使用Auth组件允许函数。语法是

$this->Auth->allow(array('action_name_1','action_name2'));

将此允许函数粘贴到beforeFilter函数中。通过使用上述技巧,您可以防止用户在未登录的情况下访问您的逻辑。

关键是
返回
调用
$this->redirect()
调用,该调用将立即从控制器返回一个响应对象,使调度程序了解您希望立即终止请求:

return $this->redirect($url);

重定向可以通过控制器操作本身或控制器中的任何回调来完成(
beforeFilter
beforeRender
afterFilter
…)。还允许从任何组件回调返回重定向值。

我刚刚遇到了同样的问题。最后我得到了一个很好的
header()
函数和
die()


您是否可以在控制器操作中通过
$this->redirect(“…”)
调用它?(不确定语法)不过,看起来在重定向后返回可能会起作用;我从控制器调用的方法调用它。。。因此,这并不能解决我的问题。然后返回该方法的返回值,或者使用事件,或者在您的秘密场景中合适的任何东西……即使在2.x应用程序中,您也应该已经对所有重定向使用了“return”。
header('Location: http://example.com/whatever');  
die;