0

リソースとアクションへのアクセスをチェックするための AccessControll プラグインを用意したので、プラグインにフラッシュ メッセージを設定してログイン ページにリダイレクトすると、メッセージは表示されません。

アクセス制御プラグインの行があります:

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);
    }


}

これにより、リダイレクト後のフラッシュ メッセージの表示に関するすべての問題が解決されます。問題は、リダイレクト時に phalcon がスクリプトを停止しないため、リダイレクトの前に一部のデータをレンダリングできることです。

ビューを無効にすることは、それを行う方法として適切でクリーンなソリューションではないと思います:)

于 2014-08-14T23:37:43.977 に答える