2017-04-08 3 views
1

取得404単一のアイテムに匿名でアクセスしようとするとリソースが見つかりません。つまり、認証されていません。私は代わりにビューの設定の許可を設定しているので、禁止されている403が期待されます。404リソースが見つかりませんでした

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:() 

をする際、ユーザービューが細かいレンダリングinitはのように設定トラバーサルを持って

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() 

私の見解私はそうではないときに、禁止されたビューを代わりに取得したいと考えています。

答えて

1

コンテキストがBookContainerで、view_name8LjkOSzGSR67i1dnGUOg-Qであるようです。これは、あなたの要求されたコンテキストBookResourcename''と一致しないため、アクセス許可がチェックされる前に404になります。おそらく名前が何であるか気にしないので、おそらくname述部をview_configから削除したいと思うでしょう。また、あなたのトラバーサルツリーで起こっていることに基づいて、コンテキストがあなたが期待するものではない理由を理解してください。

関連する問題