我正在做一个cakephp项目。 我被困在这里。 我想在cakephp 3.2中获取前一个url,但它不起作用。 这里的链接存在于电子邮件中,点击该链接后我将重定向到登录页面,登录后,我将重定向到之前的URL,表示仅存在于邮件中的URL。 我写了下面的代码来做。
Session session = (Session) entityManager.getDelegate();
SessionFactoryImplementor sessionFactory = (SessionFactoryImplementor) session.getSessionFactory();
Dialect dialect = sessionFactory.getDialect();
if (dialect.toString().contains("Oracle")) { ... }
Plesae建议我。 任何建议都会非常感激。 谢谢。
答案 0 :(得分:3)
Cakephp提供了将用户重定向回他们来源的功能。
其AuthComponent::redirectUrl()
登录后将它们重定向到redirectUrl,如下所示
$this->redirect($this->Auth->redirectUrl())
有关详细信息,请访问here
答案 1 :(得分:1)
首先在AppController.php中。在beforeFilter函数中存储会话中的前一个URL
public function beforeFilter(){
$url = Router::url(NULL, true); //complete url
if (!preg_match('/login|logout/i', $url)){ // Restrict login and logout actions
$this->Session->write('prevUrl', $url);
}
}
使用您需要重定向的位置
if ($this->Session->read('prevUrl')){
$this->redirect($this->Session->read('prevUrl'));
exit;
}
这正在cakephp 2.6中改变cakephp 3中的beforeFilter函数
public function beforeFilter(\Cake\Event\Event $event){
$url = Router::url(NULL, true); //complete url
if (!preg_match('/login|logout/i', $url)){ // Restrict login and logout actions
$session = $this->request->session();
$session->write('prevUrl', $url);
}
}
使用您需要重定向的位置
$session = $this->request->session();
if($session->read('prevUrl')){
$this->redirect($session->read('prevUrl'));
exit;
}