直接访问URL重定向与在锚点中使用不同

时间:2013-05-24 09:45:52

标签: php cakephp cakephp-1.3

我在这里遇到了一个非常奇怪的情况,我希望这些集体知识可以提供帮助。

我正在使用传统的CakePHP 1.3应用程序,使用本机Auth组件来保护大多数应用程序页面。但是, public 页面可供任何人访问,并使用$this->Auth->allow()

在其控制器中设置

现在,我们有一个URL(使用Cake的Router类),如果输入浏览器,直接进入预期的页面,一切正常。

但是,如果您将网址用作锚标记的href并点击该链接,则会被退回到我们应用的登录页面,就像您访问了私有网页一样URL。

我不确定我是否可以提供确切的网址,因为这是基于客户端的公共网页,而非普通公众

我们已经调试了路由,并且知道它一旦到达最终的控制器动作就会重定向,而不是在继承链中更高。

环境注意事项:

  1. 处理此URL /操作的控制器继承自设置公共页面系统的另一个控制器
  2. 它在CakePHP插件中,而不是直接控制器
  3. 其CakePHP 1.3
  4. 这仅发生在非IE浏览器中。 IE根本不显示此问题
  5. 有没有人遇到类似的东西并有解决方案?

    根据评论中的要求,我已经分享了一些代码。它的编辑很简洁,但不完整

    公共控制员
    App::import('Controller', 'Events.Bookings');
    class PublicBookingsController extends BookingsController
    {
        public function beforeFilter()
        {
            parent::beforeFilter();
            $this->Auth->allow('*');
        }
    }
    
    预订控制器
    class BookingsController extends EventsAppController
    {
        public new_booking()
        {
            die('Reached new booking');
        }
    
    }
    
    事件App Controller
    App::import('Controller', 'Occurrence');
    class EventsAppController extends OccurrenceController
    {
        public function beforeFilter()
        {
            parent::beforeFilter(); 
            // various plugin set up code
        }
    }
    
    发生控制器
    class OccurrenceController extends AppController
    {
        public function beforeFilter()
        {
            parent::beforeFilter();
            // generic plugin setup code snipped
        }
    }
    
    路线
    Router::connect('/path/to/url', array('plugin' => 'events', 'controller' => 'public_bookings', 'action' => 'new_booking');
    

0 个答案:

没有答案