基于路径的动态权限
security模块
目录结构如图所示:
整合步骤
-
第一步,给需要登录认证的模块添加security模块的依赖
-
第二步,添加xxxSecurityConfig配置类,配置UserDetailsService、DynamicSecurityService这两个Bean,一个负责获取登录用户信息,另一个负责获取存储的动态权限规则
/** * mall-security模块相关配置 * 自定义配置,用于配置如何获取用户信息及动态权限 */ @Configuration public class MallSecurityConfig { @Autowired private UmsAdminService adminService; @Autowired private UmsResourceService resourceService; @Bean public UserDetailsService userDetailsService() { //获取登录用户信息 return username -> adminService.loadUserByUsername(username); } @Bean public DynamicSecurityService dynamicSecurityService() { return new DynamicSecurityService() { @Override public Map<String, ConfigAttribute> loadDataSource() { Map<String, ConfigAttribute> map = new ConcurrentHashMap<>(); List<UmsResourceDTO> resourceList = resourceService.listAll(); for (UmsResourceDTO resource : resourceList) { map.put(resource.getUrl(), new org.springframework.security.access.SecurityConfig(resource.getId() + ":" + resource.getName())); } return map; } }; } }
-
第三步,在application.yml中配置下不需要安全保护的资源路径:
secure: ignored: urls: #安全路径白名单 - /swagger-ui/ - /swagger-resources/** - /**/v2/api-docs - /**/*.html - /**/*.js - /**/*.css - /**/*.png - /favicon.ico - /actuator/** - /druid/** - /admin/login