Pyramid 中的强制性身份验证

Posted

技术标签:

【中文标题】Pyramid 中的强制性身份验证【英文标题】:Obligatory authentication in Pyramid 【发布时间】:2014-10-20 23:43:04 【问题描述】:

我正在尝试建立一个必须进行身份验证的网站,即如果用户未登录,则仅显示登录页面。问题是如何以最低的成本实现它。我可以用

装饰每个视图
permission='authenticated'

'authenticated' 是我的权限名称;但也许有一种更简单的方法,默认情况下所有视图都需要身份验证。

注意 我已经接受了下面的答案,但我相信还有更多内容。配置位:

config = Configurator(settings=settings,
                      default_permission='standard_view',
                      root_factory='RootFactory')

安全 - 权限位:

class RootFactory(object):
    __acl__ = [(Allow, Authenticated, 'standard_view'),
               (Allow, 'g:admin', 'admin_view'),
    ]

【问题讨论】:

您的问题没有得到解答吗? 有答案 - 非常感谢! - 但我还不能让它工作。 Pyramid 中的整个身份验证/授权似乎被过度设计了:( 如果你发布你的 init.py 和一个视图函数,你可能会得到更量身定制的指导。不确定您所说的过度设计是什么意思,它允许您设置全局默认值以及每个视图的细粒度控制。 【参考方案1】:

有一种方法可以通过在 Configurator 对象中设置 default_permission 来实现。例如,在你的 __init__.py 你可以有类似的东西:

from pyramid.config import Configurator

def main(global_config, **settings):
    config = Configurator(settings=settings, default_permission='authenticated')
    config.include('pyramid_chameleon')
    config.scan()
    return config.make_wsgi_app()

您可以在以下三个链接中找到更多信息: http://docs.pylonsproject.org/docs/pyramid/en/latest/api/config.html http://docs.pylonsproject.org/docs/pyramid/en/latest/narr/security.html#setting-a-default-permission http://docs.pylonsproject.org/docs/pyramid/en/latest/api/config.html#pyramid.config.Configurator.set_default_permission

【讨论】:

根据我的最终代码 - 您还需要在定义权限的位置定义 RootFactory。

以上是关于Pyramid 中的强制性身份验证的主要内容,如果未能解决你的问题,请参考以下文章

对 C# 中的每个请求强制进行 Azure 重新身份验证

偶尔禁用 Pyramid 中间件

如何使用集成身份验证在 asp net mvc 中强制重新身份验证

强制门户身份验证后存储的 cookie 消失

如何在没有身份验证的情况下添加 Firebase 数据库规则?

强制 Laravel 使用旧版身份验证登录用户