Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据授权更改禁止的视图_Python_Pyramid - Fatal编程技术网

Python 根据授权更改禁止的视图

Python 根据授权更改禁止的视图,python,pyramid,Python,Pyramid,我想要两个403禁书。如果用户未经授权,则显示带有登录表单的页面。如果用户获得授权,则显示一个页面,告诉他们不允许查看该页面 看起来,金字塔的effective\u principals就是解决这个问题的方法。然而,我似乎无法找到正确的方法来利用它。以下是我正在做的: from pyramid.security import Authenticated @forbidden_view_config(containment=MyClass, renderer='login.pt') def n

我想要两个403禁书。如果用户未经授权,则显示带有登录表单的页面。如果用户获得授权,则显示一个页面,告诉他们不允许查看该页面

看起来,金字塔的
effective\u principals
就是解决这个问题的方法。然而,我似乎无法找到正确的方法来利用它。以下是我正在做的:

from pyramid.security import Authenticated


@forbidden_view_config(containment=MyClass, renderer='login.pt')
def not_found(context, request):
    return dict()


@forbidden_view_config(containment=MyClass, effective_principals=Authenticated)
def not_found(context, request):
    return Response('Not allowed.')
但是,我得到一个错误:

PredicateMismatch:未找到视图的谓词不匹配(有效的\u主体=['system.Authenticated'])


禁止视图内
可以设置如下条件:

if authenticated_userid(request):
    return HTTPFound(location=request.route_url('forbidden_logged_in'))
因此,已登录和未登录的用户都将通过金字塔重定向到此页面,然后金字塔将已登录的用户重定向到另一个页面,顺便说一句,可以通过以下方式进行保护:

@view_config(route_name='forbidden_logged_in', permission='user')