All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.dengchen2020.security.config.PermissionVerifierAutoConfiguration Maven / Gradle / Ivy

There is a newer version: 0.0.28
Show newest version
package io.github.dengchen2020.security.config;

import io.github.dengchen2020.security.core.interceptor.PermissionVerifyInterceptor;
import io.github.dengchen2020.security.core.support.permission.PermissionVerifier;
import io.github.dengchen2020.security.core.support.permission.SimplePermissionVerifier;
import io.github.dengchen2020.security.properties.SecurityProperties;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 权限校验自动配置
 * @author dengchen
 * @since 2024/7/22
 */
@ConditionalOnProperty(value = "dc.security.permission.enabled", havingValue = "true")
@Configuration(proxyBeanMethods = false)
public class PermissionVerifierAutoConfiguration {

    @ConditionalOnMissingBean
    @Bean
    public PermissionVerifier permissionVerifier() {
        return new SimplePermissionVerifier();
    }

    @Configuration(proxyBeanMethods = false)
    static class InterceptorConfiguration implements WebMvcConfigurer {

        private final SecurityProperties securityProperties;

        private final PermissionVerifier permissionVerifier;

        public InterceptorConfiguration(SecurityProperties securityProperties, PermissionVerifier permissionVerifier) {
            this.securityProperties = securityProperties;
            this.permissionVerifier = permissionVerifier;
        }

        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new PermissionVerifyInterceptor(permissionVerifier))
                    .order(Ordered.HIGHEST_PRECEDENCE + 10)
                    .excludePathPatterns(securityProperties.getResource().getPermitPath());
        }

    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy