我有一个准备好的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/');
}
有人能说出我做错了吗?
答案 0 :(得分:1)
在你的控制器中放
$this->view->disable();
前
$this->redirect();
这会有所帮助。对我来说这也是意料之外的事情;)
答案 1 :(得分: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在重定向时不会停止脚本,因此它可以在重定向之前呈现一些数据。
我认为禁用视图并不是一个很好的清洁解决方案:)