2017-04-08 5 views
1

404 erhalten Ressource wurde nicht gefunden, wenn versucht wird, auf ein einzelnes Objekt als anonym zuzugreifen, d. H. Nicht authentifiziert. Ich würde stattdessen eine 403 Forbidden erwarten, da ich die Berechtigung für die View-Konfiguration eingestellt habe. wurde404 Die Ressource konnte nicht gefunden werden

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

Log zeigt, dass der Weg dann angepasst, obwohl 404 debug_notfound zeigt:

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

Meine Ansichten init die Traversal als gesetzt

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

Der Blick fein machen, wenn der Benutzer Ist gerade eingeloggt, wenn nicht, möchte ich stattdessen Verbotene Ansicht bekommen.

Antwort

1

Es sieht so aus als ob Ihr Kontext BookContainer mit einem view_name von 8LjkOSzGSR67i1dnGUOg-Q ist. Dies entspricht nicht dem von Ihnen benötigten Kontext von BookResource mit einem name von '' und wäre somit ein 404, bevor Berechtigungen überprüft werden. Sie möchten wahrscheinlich das name Prädikat von Ihrem view_config fallen lassen, weil Sie wahrscheinlich nicht interessieren, was der Name ist. Finden Sie auch heraus, warum der Kontext nicht das ist, was Sie erwarten, basierend auf dem, was in Ihrem Traversal Tree passiert.

Verwandte Themen