我如何使用金字塔,它需要用户登录,除非我明确说它不适用于某个视图?
目前,我需要为我创建的每个view_config
添加一些必需的权限。如果我忘记了一个,我将面临安全风险。我反过来喜欢它,在登录时添加一些免费访问标签等。如果我忘记其中一个,我将有一个无法访问的页面,这将比失踪的保护更容易被发现。
现在我需要一些权限参数,并在我的AuthPolicy中对此进行一些检查
@view_config(route_name='my_route', renderer='my_templ.html', permission='view')
def view_foo(request):
# ...
我想要添加permission=None
或者像@public_access
或其他任何东西的第二个装饰器。
我目前实际上只对仅为登录用户访问所有视图感兴趣(而不是要求更具体的权限)。但使用权限似乎是正确的方法。任何建议只有在明确指定的情况下才能登录"情况将不胜感激。
答案 0 :(得分:4)
使用config.set_default_permission
为没有明确设置的视图设置权限。
因此你可以做到
config.set_default_permission('private_view')
并将'private_view'
权限限制为经过身份验证的用户;然后为未经身份验证的用户明确允许某些视图(如登录)。
还要注意:
如果默认权限有效,请查看配置 创建一个真正匿名访问的视图(甚至是异常视图视图) 必须使用可导入权限的值作为 pyramid.security.NO_PERMISSION_REQUIRED。当这个字符串用作 视图配置的权限,默认权限是 忽略,视图已注册,使所有人都可以使用 呼叫者,无论他们的凭据如何。
否则将拒绝访问您的404,403视图...