cakephp:登录后重定向回初始请求

我根据本教程实现了安全性: http://book.cakephp.org/view/1543/Simple-Acl-controlled-Application 我想要它做的是,如果用户发出请求但未登录,它们将显示登录页面,然后重定向回原始请求。 我想我需要在app_controller.php(顶级控制器)中添加代码以将初始请求保存为可能的会话变量,然后在用户控制器中的此函数末尾添加一行以重定向到保存的值:
function login() {
        if ($this->Session->read('Auth.User')) {
            $this->Session->setFlash('You are logged in!');
            // redirect to referrer here
        }
    }   
我在这里走在正确的轨道上吗?     
已邀请:
你可以快速搜索...登录后让用户回到上一页?     
所以从dogmatic的链接线程看起来我需要做的就是从教程中替换这一行:
$this->Auth->loginRedirect = array('controller' => 'alerts', 'action' => 'index');
有了这个:
$this->Auth->loginRedirect = array('controller' => 'alerts', 'action' => 'home');
    
我认为你已经花了足够的时间与CakePHP一起做下面的步骤。这是解决方案; 将
Auth
Session
组件添加到AppController的组件中(如果您 还没有完成)。从现在开始,所有的控制器都可以使用 Auth和Session功能。 覆盖
UsersController
(或类似控制器)的
beforeFilter()
功能 使用那一行代码来管理用户操作;
$this->Auth->loginRedirect = $this->Session->read("Auth.loginRedirect");
This 应该将代码置于函数中,因为PHP不支持函数调用 变量分配。 之后,为了防止错误地重定向到已经重定向的页面,还要将该行添加到
UsersController
beforeFilter()
功能;
$this->Session->write('Auth.loginRedirect', "/");
如果您确定为每个控制器执行了第4步,则不需要上述代码。 覆盖
beforeFilter()
功能 登录后想要回到那里的控制器 一行代码;
$this->Session->write('Auth.loginRedirect', Router::url(null,
true));
。这段代码的作用就是编写完整的基础 controller / action [/ param1 ...] URL(注意参数 顺便说一句,以
Auth.loginRedirect
名称参加会议​​。 PS:阅读jocull的评论,找出为什么我没有使用
$this->here
。     

要回复问题请先登录注册