如何获得禁止()的“原因”?
Posted
技术标签:
【中文标题】如何获得禁止()的“原因”?【英文标题】:How do I obtain the 'reason' for a forbidden()? 【发布时间】:2012-09-27 22:01:34 【问题描述】:我正在设计我的 403 页面,但我似乎无法获得我在各种禁止页面上填充的“原因”字符串,以便对手头的问题给出更相关的响应。如果我在模板中键入 $response.reason,整个页面将被替换为仅响应的文本。
【问题讨论】:
【参考方案1】:在代码中,您似乎可以通过这样做在模板中获取此值
$result.getMessage()
result 是您的 Forbidden 对象,它继承自 RuntimeException,您提供的描述作为异常消息传递给基类
【讨论】:
【参考方案2】:您不想再提供“禁止”的理由。从安全的角度来看,用户尝试了未经授权的操作,而您要做的最后一件事就是告诉他们究竟出了什么问题(未知用户、无效密码等)。如果你这样做,你就是在泄露可以帮助用户渗透你系统的信息。
例如,如果您区分未知用户和无效密码,您将放弃该用户标识是否存在。
【讨论】:
对于我的设置,我不同意。未知用户和无效密码无法访问我的 403 页面。在这些情况下,他们会被发送到登录页面并提示登录。如果他们随后登录并尝试访问仅限于他们的页面,这就是我的 403 页面出现的时候。例如:如果用户是组织的一部分,他们有一个“编辑组织”页面。如果他们将该链接发送给不属于该组织的人,我想将他们发送到我的禁止页面,包括“您不属于该组织”。作为“原因”。 为了更清楚一点,我根据用户访问此信息所需的安全性来分解我的控制器,在每个控制器中我都有 @Before 方法来检查给定的身份验证用户具有适当的权限。如果不是,我打电话给禁止(“这就是您无法访问该页面的原因。”);以上是关于如何获得禁止()的“原因”?的主要内容,如果未能解决你的问题,请参考以下文章
Artisan 错误:无法在 localhost:8000 上侦听(原因:尝试以访问权限禁止的方式访问套接字。)