0

我有一个准备好的 AccessControll 插件,用于检查对资源和操作的访问,所以当我在插件中设置 flash 消息然后重定向到登录页面时,消息不会显示。

我有访问控制插件行:

if(!$role || !$moduleAcl || !$moduleAcl->isAllowed($role,$controller,$action)){
      $this->flash->warning('Nemáte oprávnění na provedení této akce.');
      if(!$moduleAcl->isAllowed($role, 'index', 'index')){
            $auth = \Core\Auth::logout();
      }
      else {
           return $this->response->redirect($module.'/');
      }
}

在,基本控制器我有一条线:

if(!$identity)
{          
   return $this->response->redirect('manager/auth/');                      
}

有人能告诉我我做错了什么吗?

4

2 回答 2

1

在你的控制器里放

$this->view->disable();

$this->redirect();

我会帮你的。前段时间这对我来说也是出乎意料的;)

于 2014-08-14T23:07:55.700 回答
0

我为此做了一个解决方案:

<?php
namespace Core\Http;

/**
 * Description of Response
 *
 * @author softdream
 */
class Response extends \Phalcon\Http\Response {
    //put your code here

    public function redirect($locationPath = null, $baseUrl = null, $statusCode = null) {
        if($statusCode){
            $this->setStatusHeader($code);
        }

        if(substr($locationPath, 0,1) === '/'){
            $locationPath = substr($locationPath, 1);
        }

        header("Location: ".$baseUrl.'/'.$locationPath);
        exit;
    }

    protected function setStatusHeader($code){
        header("HTTP/1.0 ".$code);
    }


}

这将解决重定向后显示 flash 消息的所有问题,问题是 phalcon 在重定向时不会停止脚本,因此它可以在重定向之前呈现一些数据。

我认为禁用视图不是一个好的和干净的解决方案如何做到这一点:)

于 2014-08-14T23:37:43.977 回答