私は春のセキュリティで保護された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エンドポイントを保護するにはどうすればよいですか?それを行う正しい方法は何ですか?
Iは、[リファレンスガイド](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') ");'のようなものは、 –