Class MapBasedMethodSecurityMetadataSource

  • All Implemented Interfaces:
    org.springframework.aop.framework.AopInfrastructureBean, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, MethodSecurityMetadataSource, SecurityMetadataSource

    public class MapBasedMethodSecurityMetadataSource
    extends AbstractFallbackMethodSecurityMetadataSource
    implements org.springframework.beans.factory.BeanClassLoaderAware
    Stores a list of ConfigAttributes for a method or class signature.

    This class is the preferred implementation of MethodSecurityMetadataSource for XML-based definition of method security metadata. To assist in XML-based definition, wildcard support is provided.

    Since:
    2.0
    • Field Detail

      • methodMap

        protected final java.util.Map<org.springframework.security.access.method.MapBasedMethodSecurityMetadataSource.RegisteredMethod,​java.util.List<ConfigAttribute>> methodMap
        Map from RegisteredMethod to ConfigAttribute list
    • Constructor Detail

      • MapBasedMethodSecurityMetadataSource

        public MapBasedMethodSecurityMetadataSource()
      • MapBasedMethodSecurityMetadataSource

        public MapBasedMethodSecurityMetadataSource​(java.util.Map<java.lang.String,​java.util.List<ConfigAttribute>> methodMap)
        Creates the MapBasedMethodSecurityMetadataSource from a
        Parameters:
        methodMap - map of method names to ConfigAttributes.
    • Method Detail

      • findAttributes

        protected java.util.Collection<ConfigAttribute> findAttributes​(java.lang.Class<?> clazz)
        Implementation does not support class-level attributes.
        Specified by:
        findAttributes in class AbstractFallbackMethodSecurityMetadataSource
        Parameters:
        clazz - the target class for the invocation (never null)
        Returns:
        the security metadata (or null if no metadata applies)
      • findAttributes

        protected java.util.Collection<ConfigAttribute> findAttributes​(java.lang.reflect.Method method,
                                                                       java.lang.Class<?> targetClass)
        Will walk the method inheritance tree to find the most specific declaration applicable.
        Specified by:
        findAttributes in class AbstractFallbackMethodSecurityMetadataSource
        Parameters:
        method - the method for the current invocation (never null)
        targetClass - the target class for the invocation (may be null)
        Returns:
        the security metadata (or null if no metadata applies)
      • addSecureMethod

        public void addSecureMethod​(java.lang.Class<?> javaType,
                                    java.lang.String mappedName,
                                    java.util.List<ConfigAttribute> attr)
        Add configuration attributes for a secure method. Mapped method names can end or start with * for matching multiple methods.
        Parameters:
        javaType - target interface or class the security configuration attribute applies to
        mappedName - mapped method name, which the javaType has declared or inherited
        attr - required authorities associated with the method
      • addSecureMethod

        public void addSecureMethod​(java.lang.Class<?> javaType,
                                    java.lang.reflect.Method method,
                                    java.util.List<ConfigAttribute> attr)
        Adds configuration attributes for a specific method, for example where the method has been matched using a pointcut expression. If a match already exists in the map for the method, then the existing match will be retained, so that if this method is called for a more general pointcut it will not override a more specific one which has already been added.

        This method should only be called during initialization of the BeanFactory.

      • getAllConfigAttributes

        public java.util.Collection<ConfigAttribute> getAllConfigAttributes()
        Obtains the configuration attributes explicitly defined against this bean.
        Specified by:
        getAllConfigAttributes in interface SecurityMetadataSource
        Returns:
        the attributes explicitly defined against this bean
      • setBeanClassLoader

        public void setBeanClassLoader​(java.lang.ClassLoader beanClassLoader)
        Specified by:
        setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware
      • getMethodMapSize

        public int getMethodMapSize()
        Returns:
        map size (for unit tests and diagnostics)