我有春季啓動應用程序,它公開了受春季安全保護的REST端點。春季安全:根據服務請求提供訪問
我需要根據服務調用限制對某些路徑的訪問。比方說,我有一個服務是這樣的:
@Service
public class AccessService {
boolean hasAccess(String requestedPath) {
// some business logic here
}
}
該服務將檢查用戶的角色,一些企業經營狀況,並返回true
或false
。
現在我需要將此服務調用集成到我的安全配置中。
到目前爲止,我有配置是這樣的:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
...
.and().authorizeRequests()
.anyRequest().hasRole("USER");
}
我看不出這裏添加服務調用的方式(因爲它是完全靜態的)。
我試圖:
目前我想重寫我的AuthenticationProvider
並與附加功能擴展它的。
另一種選擇是將我的REST控制器從一個可以做某種授權的類中擴展出來,但我不確定它是否可行。
問題:如何根據服務方法調用保護REST端點?這樣做的正確方法是什麼?
我建議閱讀[參考指南](https://docs.spring.io/spring-security/site/docs/current/reference/html/el-access.html#el-access-web) 。類似於'anyRequest()。access(「@ accessService.hasAccess(request.requestURI)&& hasRole('USER')」);' –