在我的控制器中,我检查一个条件,看看用户是否被允许做一些事情。如果检查失败,我想向浏览器发回一个403。我如何在Cakephp中做到这一点?
发布于 2009-07-08 23:35:51
编辑-这个问题已经很久了,涵盖了不同版本的CakePHP框架。以下是每个答案适用于哪个版本的摘要。别忘了投票选出最有帮助的解决方案。
错误处理程序3.x和4.x -使用响应对象(Roberto's answer)
EDIT #2 - Mark37添加了CakePHP 2.x的more detailed answer。
EDIT #3 -为CakePHP添加的解决方案。(2018年5月: CakePHP 3.5进行了一些函数重命名,solution by Roberto仍然有效。)
通过查看上一条注释中的相关API code,您似乎可以调用Controller::header($status)来输出头而无需重定向。在您的例子中,正确的用法很可能是:
$this->header('HTTP/1.1 403 Forbidden');发布于 2012-07-14 00:48:53
$this->response->statusCode(403);当Cake准备好发送响应时,将设置状态代码。send ()期望发送状态代码和消息,所以在我的测试中,我认为我使用的header()被覆盖了。使用$this->header('HTTP/1.1 400 Bad Request')也不起作用,因为Cake希望对$this->header的任何调用都在冒号上拆分(例如:$this->header('Location: ...')
发布于 2012-10-05 06:46:59
在CakePHP 2中,preferred method是to throw an exception
throw new ForbiddenException();https://stackoverflow.com/questions/1100867
复制相似问题