Fancybox 在会话超时时显示登录表单 cakephp

Fancybox displays login form on session timeout cakephp

我想问你一些我一直在努力的事情。

我有一个 link 可以在 fancybox modal 中显示 pdf。一切正常,直到会话过期,fancybox 模式显示登录表单。 你知道我能做什么吗?:这是我使用的代码:

index.ctp:

<?php echo $this->Html->link(__(''),                        
                      array(
                        'controller'=>'Search',
                        'action'=>'seepdf',
                        ''                                                      
                      ),          
                        array(
                            "class"=>"glyphicon glyphicon-qrcode fancybox",
                            'data-fancybox-type'=>"iframe"                      
                        )) ?>

SearchController.php

    public function seepdf() {
    $this->viewClass = 'Media';
    $params = array(
          'id' => '232.pdf',
          'name' => '232',
          'download' => false,
          'extension' => 'pdf', 
          'path' => APP . 'files' . DS 
   );
   $this->set($params);
}

如有任何帮助,我们将不胜感激。提前致谢。

这是我提供的解决方案,虽然不是最好的方法,但确实有效。 我在 fancybox 加载之前调用 ajax 来检查用户是否登录,如果用户登录,一切正常,但如果没有用户登录,它会重定向到登录页面: 这是代码:

index.ctp

        var succeed = true;
    $(".fancybox").fancybox({
        openEffect  : 'elastic',
        closeEffect : 'elastic',
        padding : 0,
        iframe : {
            preload: false
        },
        beforeLoad: function(){  
            $.ajax({
                type:"POST",
                async: false,           
                url:"Search/isactive/",
                success : function(data) {          
                    if(data !== 'true'){            
                        succeed = false;                                
                    }else{
                        succeed = true;
                    }       
                },
                error : function() {
                    succeed = false;                            
                }
            });  
            if(succeed === false){
                window.location = 'Users/signin'; 
                return false;   
            }   
        }
    });

SearchController.php

    if ($this->Auth->loggedIn()) {
    $this->autoRender = false;
    $this->layout = null ;
    echo json_encode(true);
}else{
    echo json_encode(FALSE);
}   

我需要添加一些验证,但这是一个有效的代码,以防万一有人需要它。如果有人有更好的主意,请告诉我,最好的问候!