首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cornice的简单身份验证和ACL

使用cornice的简单身份验证和ACL
EN

Stack Overflow用户
提问于 2015-09-11 11:34:58
回答 2查看 846关注 0票数 1

我有一个用金字塔/ RESTful编写的科尼丝 API。它为Ember客户机提供了一个API。

我遵循了科尼斯教程,并拥有一个valid_token验证器,我在许多视图中使用它作为资源类的方法。

代码语言:javascript
复制
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

现在我想开始有选择地保护资源。金字塔方式似乎是注册身份验证/授权策略。ACLAuthorizationPolicy似乎提供了对金字塔中漂亮的ACL工具的访问。然而,金字塔似乎需要同时使用身份验证和授权策略。因为我用我的验证器进行身份验证,这让我很困惑。

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

我有点困惑,几乎没有在金字塔中使用ACL的经验。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-11 13:14:20

这不是一个容易的问题:)

短期内:

  • 您在验证器中实现的功能已经由金字塔通过AuthenticationPolicy来处理。
  • 使用自定义回调(见代码)开始设置一个见代码
  • 一旦进行了authn设置,您将得到这些401响应,以及request.authenticated_userid属性中的session值。您还可以在request.registry对象中自定义内容。

保留验证器的唯一原因是如果您想在invalid token响应中返回401消息。但是,您可以定义自定义401金字塔视图(使用@forbidden_view_config)。

一旦您有了它,您就可以为您的视图设置一个自定义授权。您可以在这里找到一个非常简单的例子:authz码视图烫发

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2015-09-11 13:33:59

你可能想做这样的事情:

代码语言:javascript
复制
from pyramid.authentication import SessionAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
from your_module import valid_token 

authn_policy = SessionAuthenticationPolicy(debug=True, callback=valid_token)
authz_policy = ACLAuthorizationPolicy()

config = Configurator(authentication_policy=authn_policy,authorization_policy=authz_policy)

当然,在配置中还会收到其他参数,如settigns、locale_negociator、.

希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32522510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档