Spring Security 3.1 を使用している場合は、vote メソッドの 2 番目の引数としてパラメーターを使用してAccessDecisionVoter
、既に汎用である必要があります。<S>
AccessDecisionVoter 実装のソース コード (例: WebExpressionVoter
which implements AccessDecisionVoter<FilterInvocation>
) を参照して、概念を理解することができます。これらの実装の一部では、保護されたオブジェクトをまったく使用する必要がないため、オブジェクトをジェネリック パラメーターとして使用します (例: RoleVoter
)。
あなたの場合、おそらく必要なのはsupports(Class<?>)
メソッドをオーバーライドすることです(ドキュメントから: AccessDecisionVoter 実装が、指定された保護されたオブジェクトの種類に対してアクセス制御投票を提供できるかどうかを示します) 。FilterInvokation
WebExpressionVoter
@Override
public boolean supports(Class<?> clazz) {
return clazz.isAssignableFrom(FilterInvocation.class);
}
そして、投票の実装は次のようになります。
@Override
public int vote(Authentication authentication, FilterInvocation fi,
Collection<ConfigAttribute> attributes) {
String url = fi.getRequestUrl();
// rest of code, you can also fetch request / response from fi