2017-01-22 73 views
1

我有一个基本的应用程序使用金字塔1.8,我想有一个forbidden_​​view_config挑战客户端。金字塔1.8 forbidden_​​view_config返回404

在我的views.py我有:

from pyramid.view import view_config 
from pyramid.view import forbidden_view_config 
from pyramid.httpexceptions import HTTPUnauthorized 
from pyramid.security import forget 

@view_config(route_name='home', renderer='templates/mytemplate.jinja2') 
def my_view(request): 
    return {'project': 'odkchallenge'} 


@forbidden_view_config(route_name='carlos') 
def auth_view(request): 
    response = HTTPUnauthorized() 
    response.headers.update(forget(request)) 
    return response 

在我init.py我:

from pyramid.config import Configurator 


def main(global_config, **settings): 
    """ This function returns a Pyramid WSGI application. 
    """ 
    config = Configurator(settings=settings) 
    config.include('pyramid_jinja2') 
    config.add_static_view('static', 'static', cache_max_age=3600) 
    config.add_route('home', '/') 
    config.add_route('carlos', '/carlos') 
    config.scan() 
    return config.make_wsgi_app() 

但是,当我去http://localhost:6543/carlos我得到:

404未找到资源找不到。

/卡洛斯

我一直在看有关forbidden_​​view_config的文件,它应该像view_config。如果我将其更改为view_config/carlos不会返回404.任何想法为什么?或者我还需要包括什么?

回答

1

在您粘贴的示例中,您使用forbidden_view_config而没有包含权限的任何视图,因此不会触发它。如果您使用的是notfound_view_config,则至少应该执行您的auth_view视图。

+0

你能再解释一下吗?如何为视图添加权限?或者你能指引我到什么地方? – QLands

+0

当您的应用程序中出现HTTPForbidden异常时,您可以手动执行此功能,或者您可以使用金字塔的身份验证系统根据视图权限'@view_config(permission = ..)'自动生成异常。金字塔的sqlalchemy + url调度教程进入这个相当数量,值得一读,如果你还没有。 –