试图弄清楚哪一行正在重定向到登录页面

时间:2011-02-01 21:05:34

标签: php cakephp cakephp-1.3

我根据www.cakephp.org网站上的acl教程实现了安全性。我试图找出哪一行代码负责将用户重定向到登录页面,如果他们还没有登录。作为测试,我在app_controller.php中注释了几行来自beforefilter()函数所以它现在看起来像这样:

   function beforeFilter() {
        //Configure AuthComponent
        $this->Auth->authorize = 'actions';
        $this->Auth->actionPath = 'controllers/';




    //   $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
     //   $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');

      //  $this->Auth->loginRedirect = array('controller' => 'alerts', 'action' => 'home');
       // $this->Auth->loginRedirect = array('controller' => 'schedules', 'action' => 'index');
        $this->Auth->allowedActions = array('display');


    }

但我仍然被重定向到登录页面。

我问这个的原因是因为我的cakephp网站是通过代理服务器提供的,我需要使用相对url引用,但登录重定向是使用绝对引用。

1 个答案:

答案 0 :(得分:1)

实际重定向在AuthComponent :: startup()中完成。在那里调用AuthComponent :: isAuthorized(),在你的情况下(配置了Acl),将使用Acl进行检查。

对beforeFilter()中的设置进行更改不会对行为产生任何影响。很可能,你没有通过Acl-> check()并在第450行重定向。

请参阅此处 - https://github.com/cakephp/cakephp/blob/master/cake/libs/controller/components/auth.php#L309https://github.com/cakephp/cakephp/blob/master/cake/libs/controller/components/auth.php#L450

要处理与重定向相关的问题,请查看可能重写的Helper :: url()。创建一个app / app_helper.php,定义一个扩展Helper的类AppHelper ...并提供一个url方法。检查传递的参数,返回相应的url。