2017-01-22 68 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調度教程進入這個相當數量,值得一讀,如果你還沒有。 –