为什么我的应用程序在添加权限但不添加权限时会给我404?

问题描述 投票:0回答:1

出于某种原因,如果我在登录后被我的应用程序重定向,我会继续获得404,如果我有权限附加到该视图但是如果我删除了该权限,一切都很好。我正在使用AuthTktAuthenticationPolicy,我已经尝试添加以下回调:

def principalFinder(username, request):
    return [Authenticated]

但这并没有改变任何事情。这是有问题的观点:

@view_config(route_name='test', context=myAERO, permission='editAln')
def test(request):
    return Response(request.authenticated_userid)

正如您所看到的,它使用myAERO类作为其上下文:

class myAERO():
    __acl__ = [
    (Allow, Authenticated, 'editAln')
    ]
    def __init__(self, request):
        self.request = request

现在,似乎验证没有任何问题,因为如果我从@view_config()装饰器中删除permission ='editAln',我的应用程序会显示返回我用来登录的用户名。

我对此绝对感到困惑。我可以理解得到403禁止,但我只是不明白为什么我一直得到404状态代码!我发现this question似乎有些相关,但是你可以看到我根本没有使用name属性,所以它并没有真正帮助我。这是我第一次使用Pyramid,在我的脑海中,我想用我的应用程序完成的任务(根据经过身份验证的用户的用户名响应XSON响应和JSON响应)不应该那么难,所以我希望有人稍微多一点金字塔经验可以帮助我理解这一点。

python-3.x authentication authorization http-status-code-404 pyramid
1个回答
0
投票

我通过将myAERO类设置为根工厂而不是将其设置为每个单独视图的上下文来解决问题。我从Michael Merickel's auth demo得到了这个想法。坦率地说,我不知道为什么会这样,所以一个解释为什么仍然会非常感激的评论。

编辑:在做了一些阅读之后,我觉得它在某种程度上与整个URL Dispatch vs Traversal有关,我现在仍在努力掌握它。

© www.soinside.com 2019 - 2024. All rights reserved.