在我禁止的觀點中,我想將所有成員都重定向到他們的儀表板,如果他們訪問了一個頁面以供訪客使用,並且我想將所有訪客重定向到登錄頁面(如果他們訪問成員的頁面)。這很簡單。如何獲得金字塔中被調用視圖的權限?
但是,在某些情況下,我需要拋出HTTPForbidden錯誤,該錯誤不是失敗權限的原因,只是向用戶顯示原因。我如何確定HTTPForbidden是否是許可失敗或其他原因的結果?我想我可以用pyramid.security.has_permission
做一些奇怪的事情(還沒有嘗試過),但必須有一個更簡單的方法。
從2011年它被指出,這方面的一個老問題是,做清單上How to check what permission failed in authorization in pyramid (pylons 2)?
我想這樣做,但我希望有一個更簡單的方法。 – BDuelz
此外,邏輯'show_forbidden_page()if exception.raised_because_permission_failed()else manually_raised_exception_show_reason(exception.reason_msg)'是不是很明確,感覺就像使用一個幾乎無意識的副作用手動引發異常,而不是通過Pyramid機械。 – Sergey