gpt4 book ai didi

python - 如何获得 Pyramid 中被调用 View 的权限?

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:42 25 4
gpt4 key购买 nike

在我禁止的 View 中,如果所有成员访问访客页面,我想将他们重定向到他们的仪表板,如果他们访问成员(member)页面,我想将所有访客重定向到登录页面。这很容易。

但是,在某些情况下,我需要抛出一个 HTTPForbidden 错误,这不是权限失败的原因,只是向用户显示原因。我如何确定 HTTPForbidden 是由于权限失败还是其他原因造成的?我想我可以用 pyramid.security.has_permission 做一些奇怪的事情(还没有尝试过),但必须有更简单的方法。

2011 年的一个老问题,其中指出这是待办事项列表 How to check what permission failed in authorization in pyramid (pylons 2)?

最佳答案

这不完全是您所要求的,但它仍然可以帮助您。您的问题的正确答案已经给出:您最好提出一个比 HTTPForbidden 更合适的特定异常。

但是,如果您真的想根据触发 HTTPForbidden 异常的缺失权限来更改禁止 View 的行为,则需要获取其名称。可以在 HTTPForbidden.result.permissionHTTPForbidden 异常对象中找到缺少权限的名称。但首先,HTTPForbidden 异常需要作为禁止 View 的上下文传递。

例如,下面是我如何在我的网络应用程序中使用它来通知用户为什么他不能访问特定功能,以便他可以如果合适,请经理相应地重新配置 ACL。

@forbidden_view_config(renderer='/forbidden.mako')
def forbidden(context, request):
return { 'required_permission': context.result.permission }

它适用于 pyramid 1.4。我在文档中找不到任何东西,所以我通过调试 Pyramid 来破解它。这与其说是一个干净的解决方案,不如说是一种解决方法。

关于python - 如何获得 Pyramid 中被调用 View 的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com