限制金字塔默认需要登录

时间:2015-02-15 19:05:16

标签: python authorization pyramid

我如何使用金字塔,它需要用户登录,除非我明确说它不适用于某个视图?

目前,我需要为我创建的每个view_config添加一些必需的权限。如果我忘记了一个,我将面临安全风险。我反过来喜欢它,在登录时添加一些免费访问标签等。如果我忘记其中一个,我将有一个无法访问的页面,这将比失踪的保护更容易被发现。

现在我需要一些权限参数,并在我的AuthPolicy中对此进行一些检查

@view_config(route_name='my_route', renderer='my_templ.html', permission='view')
def view_foo(request):
    # ...

我想要添加permission=None或者像@public_access或其他任何东西的第二个装饰器。

我目前实际上只对仅为登录用户访问所有视图感兴趣(而不是要求更具体的权限)。但使用权限似乎是正确的方法。任何建议只有在明确指定的情况下才能登录"情况将不胜感激。

1 个答案:

答案 0 :(得分:4)

使用config.set_default_permission为没有明确设置的视图设置权​​限。

因此你可以做到

config.set_default_permission('private_view')

并将'private_view'权限限制为经过身份验证的用户;然后为未经身份验证的用户明确允许某些视图(如登录)。

还要注意:

  

如果默认权限有效,请查看配置   创建一个真正匿名访问的视图(甚至是异常视图视图)   必须使用可导入权限的值作为   pyramid.security.NO_PERMISSION_REQUIRED。当这个字符串用作   视图配置的权限,默认权限是   忽略,视图已注册,使所有人都可以使用   呼叫者,无论他们的凭据如何。

否则将拒绝访问您的404,403视图...