gpt4 book ai didi

python - 使用 cornice 的简单例份验证和 ACL

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

我有一个用 Pyramid/cornice 编写的 RESTful API 。它为 Ember 客户端提供 API。

我已关注cornice tutorial并有一个 valid_token 验证器,我在许多 View 上将其用作资源类的方法。

def valid_token(request):
header = 'Authorization'
token = request.headers.get(header)
if token is None:
request.errors.add('headers', header, "Missing token")
request.errors.status = 401
return
session = DBSession.query(Session).get(token)
if not session:
request.errors.add('headers', header, "invalid token")
request.errors.status = 401
request.validated['session'] = session

现在我想开始有选择地保护资源。 The Pyramid way似乎是注册认证/授权策略。 ACLAuthorizationPolicy 似乎提供了对 Pyramid 中很好的 ACL 工具的访问。然而, Pyramid 似乎需要身份验证和授权策略才能发挥作用。由于我正在使用验证器进行身份验证,这让我感到困惑。

我可以使用 ACL 来控制授权,同时使用我的 cornice valid_token 验证器进行身份验证吗?是否需要注册 Pyramid 认证或授权策略?

我有点困惑,在 Pyramid 中使用 ACL 的经验很少。

最佳答案

这不是一个简单的问题:)

简短地说:

  • 您在验证器中实现的内容已由 Pyramid 通过 AuthenticationPolicy 处理
  • 开始设置SessionAuthenticationPolicy使用您的自定义回调 ( see code )
  • 一旦这个authn设置后,您将拥有那些 401回复,以及您的session request.authenticated_userid 中的值属性。您还可以在 request.registry 中自定义内容对象。

保留验证器的唯一原因是如果您想返回 invalid token 401 中的消息回复。但为此,您可以定义自定义 401 Pyramid View (使用 @forbidden_view_config )

一旦获得授权,您就可以为您的 View 设置自定义授权。您可以在 Cliquet 第一个版本中找到一个非常简单的示例:authz codeview perm

祝你好运!

关于python - 使用 cornice 的简单例份验证和 ACL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522510/

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