因此,对controller进行了更改::重定向,现在它在调用控制器操作后触发。因此,如果您想在触发逻辑之前重定向某个人(例如,没有登录),那就不可能了。有人知道如何模拟以前的2.X行为吗?在这种情况下,调用Controller::重定向会立即停止一切并重定向?
发布于 2015-04-07 07:27:35
关键是return $this->redirect()调用,该调用将立即从控制器返回一个响应对象,这将使调度人员理解您希望立即终止请求:
return $this->redirect($url);可以从控制器操作本身或控制器中的任何回调(beforeFilter、beforeRender、afterFilter .)执行重定向。还允许从任何组件回调中返回重定向值。
发布于 2015-04-07 05:05:17
如果用户没有登录,有三种可能的重定向方法。我做了我的应用程序之一。首先是使用控制器的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函数中。通过使用上述技巧,您可以防止用户访问您的逻辑,如果他/她没有登录。
发布于 2020-03-04 15:58:36
我只是遇到了同样的问题。最后,我得到了好的老header()函数和die()
header('Location: http://example.com/whatever');
die; https://stackoverflow.com/questions/29481810
复制相似问题