【发布时间】:2015-03-06 06:45:57
【问题描述】:
在未经授权的访问时,Plone 默认提供重定向到登录表单。我需要为某些子路径(即不是全局的)阻止这种情况,而是在(否则)正常的 Plone 身份验证和授权发生后返回 403 Forbidden 和自定义(短)HTML 页面。
我研究了 ITraversable,但在请求处理链中使用它太早了 - 即。在身份验证等之前。
一种可能但尚未探索的方法是将自定义视图注入到 URL 路径中,该视图对映射到剩余子路径的对象执行身份验证检查。所以可能会有一个 URL 类似于http://myplone/somepath/customview/withcustom403 的请求,其中:
-
customview视图实现IPublishTraverse,其publishTraverse()返回自身 - 下一个视图在其
__call__方法中验证对withcustom403对象的访问,即。致电getSecurityManager().validate() - 如果验证失败,视图将响应设置为 403 并返回自定义 HTML
这行得通吗?还是在 auth 发生之后触发了某些事件,但在 Plone 调用 response.Unauthorized()(触发重定向)之前,这将提供更清洁的解决方案?
这适用于当前的 Plone 4.3.4。
【问题讨论】: