2017-04-08 159 views
1

獲取404嘗試以匿名方式訪問單個項目時未找到資源,即未通過身份驗證。我期望改爲403 Forbidden,因爲我已經在視圖配置上設置了權限。404找不到資源

class BookShow(FormView): 
"""Show one instance of a model.""" 

    resource_buttons = [...] 

    @view_config(route_name="book", context=BookResource, name="", renderer="site/workspace/book/single.html", permission="authenticated") 
    def book(self): 
     ... 
     return locals() 

我的意見初始化已遍歷設置爲:

self.config.add_route('book', '/book/*traverse', factory="bookstoreapp.views.bok.views.book_container_factory") 

日誌顯示,該航線是匹配的,雖然然後顯示404 debug_notfound:

2017-04-08 12:36:09 mamachine pyramid_debug[685] DEBUG route matched for url http://localhost:6543/book/8LjkOSzGSR67i1dnGUOg-Q; route_name: 'book', path_info: '/book/8LjkOSzGSR67i1dnGUOg-Q', pattern: '/book/*traverse', matchdict: {'traverse': ('8LjkOSzGSR67i1dnGUOg-Q',)}, predicates: '' 
2017-04-08 12:36:09 mamachine pyramid_debug[685] DEBUG debug_notfound of url http://localhost:6543/book/8LjkOSzGSR67i1dnGUOg-Q; path_info: '/book/8LjkOSzGSR67i1dnGUOg-Q', context: <bookstoreapp.views.book.views.BookContainer object at 0x7eff6d5d1fd0>, view_name: '8LjkOSzGSR67i1dnGUOg-Q', subpath:(), traversed:(), root: <bookstoreapp.views.book.views.BookContainer object at 0x7eff6d5d1fd0>, vroot: <bookstoreapp.views.book.views.BookContainer object at 0x7eff6d5d1fd0>, vroot_path:() 

視圖渲染精細當用戶只是在那個時候登錄的時候,我想獲取Forbidden視圖。

回答

1

它看起來像你的情況是BookContainerview_name8LjkOSzGSR67i1dnGUOg-Q。這與BookResource所需的上下文不匹配,name''因此在檢查權限之前會是404。您可能想從view_config中刪除name謂詞,因爲您可能不在意名稱是什麼。還要根據遍歷樹中發生的事情弄清楚爲什麼上下文不是您所期望的。