F i l t e r I n v o c a t ionSecurityMetadataSourceメソッドの使用
1.Collection getAttributes(Object object) throws IllegalArgumentException;
保護されたセキュリティオブジェクトobjectを取得するために必要な権限情報は、現在のSecurityMetadataSourceオブジェクトによってサポートされていない場合、例外IllegalArgumentExceptionが放出されるコンフィギュレーションオブジェクトのセットです.この方法は通常boolean supports(Class>clazz)とともに使用され、boolean supports(Class>clazz)を使用して、現在のSecurityMetadataSourceでセキュリティオブジェクトがサポートされていることを確認してから呼び出されます.
2.Collection getAllConfigAttributes()
このSecurityMetadataSourceオブジェクトに保存されているすべてのセキュリティオブジェクトに対する権限情報のセットを取得します.この方法の主な目的はAbstractSecurityInterceptorによって起動時に各ConfigAttributeオブジェクトを検証することである.
3.boolean supports(Class> clazz)
ここでclazzは、呼び出し元の現在のSecurityMetadataSourceがこのようなセキュリティオブジェクトをサポートしているかどうかを通知するためのセキュリティオブジェクトのタイプを表し、サポートされている場合にのみgetAttributesメソッドを呼び出すことができます.
その他のクラスは、SpringのAntPathMatcher
Spring SecurityのFilterInvocation
Spring SecurityのSecurityConfig
保護されたセキュリティオブジェクトobjectを取得するために必要な権限情報は、現在のSecurityMetadataSourceオブジェクトによってサポートされていない場合、例外IllegalArgumentExceptionが放出されるコンフィギュレーションオブジェクトのセットです.この方法は通常boolean supports(Class>clazz)とともに使用され、boolean supports(Class>clazz)を使用して、現在のSecurityMetadataSourceでセキュリティオブジェクトがサポートされていることを確認してから呼び出されます.
2.Collection getAllConfigAttributes()
このSecurityMetadataSourceオブジェクトに保存されているすべてのセキュリティオブジェクトに対する権限情報のセットを取得します.この方法の主な目的はAbstractSecurityInterceptorによって起動時に各ConfigAttributeオブジェクトを検証することである.
3.boolean supports(Class> clazz)
ここでclazzは、呼び出し元の現在のSecurityMetadataSourceがこのようなセキュリティオブジェクトをサポートしているかどうかを通知するためのセキュリティオブジェクトのタイプを表し、サポートされている場合にのみgetAttributesメソッドを呼び出すことができます.
@Component
public class CustomFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
@Autowired
MenuService menuService;
AntPathMatcher antPathMatcher = new AntPathMatcher();
@Override
public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
String requestUrl = ((FilterInvocation) object).getRequestUrl();
List<Menu> menus = menuService.getAllMenusWithRole();
for (Menu menu : menus) {
if (antPathMatcher.match(menu.getUrl(), requestUrl)) {
List<Role> roles = menu.getRoles();
String[] str = new String[roles.size()];
for (int i = 0; i < roles.size(); i++) {
str[i] = roles.get(i).getName();
}
return SecurityConfig.createList(str);
}
}
return SecurityConfig.createList("ROLE_LOGIN");
}
@Override
public Collection<ConfigAttribute> getAllConfigAttributes() {
return null;
}
@Override
public boolean supports(Class<?> clazz) {
return true;
}
}
その他のクラスは、SpringのAntPathMatcher
Spring SecurityのFilterInvocation
Spring SecurityのSecurityConfig