我的用例是驗證&,然後根據@PathVariable參數授權用戶。我需要執行一些自定義代碼來授權委託人。我不知道在這裏採取的辦法 -基於路徑變量的spring-security授權
我實現了自定義AbstractAuthenticationProcessingFilter &的AuthenticationProvider進行認證,這最終賦予角色的主體。我可以檢查servlet請求中的路徑變量(使用HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE),並將其他權限添加到身份驗證令牌中。然後我可以使用內置的hasRole,hasPermission表達式來實現訪問控制。
我可以擴展WebSecurityExpressionRoot並實現一個自定義AbstractSecurityExpressionHandler並定義我自己的表達式,以用於攔截url訪問控制表達式。我不確定如何在我的WebSecurityExpressionRoot實現中定義自定義方法時訪問@PathVariables。
哪種方法更可取,還是有另一種方法可以乾淨地做到這一點?
hasPermission api有點限制,例如,如果我需要訪問多個路徑變量或api簽名的其他組件,該怎麼辦?這就是爲什麼我想要定義我自己的方法在表達式中使用。 – Oceanic