-
Notifications
You must be signed in to change notification settings - Fork 16
七、注意事项
ZeroOrInfinity edited this page Jan 16, 2021
·
11 revisions
1. HttpSecurity 配置问题:UMS 中的 HttpSecurityAware 配置与应用中的 HttpSecurity 配置冲突问题:
-
如果是新建应用添加 HttpSecurity 配置, 通过下面的接口即可:
-
如果是已存在的应用:
- 添加 HttpSecurity 配置, 通过下面的接口即可:
HttpSecurityAware
- 已有的 HttpSecurity 配置, 让原有的 HttpSecurity 配置实现此接口进行配置:
top.dcenter.security.core.api.config.HttpSecurityAware
- 添加 HttpSecurity 配置, 通过下面的接口即可:
-
与 spring cloud: 2020.0.0 和 spring 2.4.x 集成时, 因配置文件的加载方式发送变化, 当使用 spring.factories 加载此类时, 会有如下错误提示: Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one .
- 解决方案:
// 第一种方案: 使用 spring.factories 加载此类, 再添加下面空的 WebSecurityConfigurerAdapter 配置类,
// 阻止 spring 自动加载方式默认的 WebSecurityConfigurerAdapter 配置.
// 适合引入了 top.dcenter:ums-core-spring-boot-starter 或 top.dcenter:ums-spring-boot-starter 模块
@Configuration
public class WebSecurityAutoConfigurer extends WebSecurityConfigurerAdapter { }
// 第二种方案: 不使用 spring.factories 加载此类, 直接注册此类到 IOC 容器.
// 适合所有模块.
@Configuration
public class WebSecurityAutoConfigurer {
@Bean
public SecurityCoreAutoConfigurer securityCoreAutoConfigurer() {
return new SecurityCoreAutoConfigurer();
}
}
- 属性名称: SecurityConstants.SERVLET_CONTEXT_PERMIT_ALL_SET_KEY
- 属性值: Set, 把权限类型为 PERMIT_ALL 的 Set 存储在 servletContext .
- 同一个 uri 由多种验证码同时配置, 优先级如下:
SMS > CUSTOMIZE > SELECTION > TRACK > SLIDER > IMAGE
- 添加一些 Authentication 与 UserDetails 子类的反序列化器, 以解决 redis 缓存不能反序列化此类型的问题, 具体配置 redis 反序列器的配置请看 RedisCacheAutoConfiguration.getJackson2JsonRedisSerializer() 方法.
// 示例
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
// Auth2Jackson2Module 为此项目实现的反序列化配置
objectMapper.registerModules(new CoreJackson2Module(), new WebJackson2Module(), new Auth2Jackson2Module());
jackson2JsonRedisSerializer.setObjectMapper(om);
- 注意: UmsUserDetailsService
的注册用户方法返回的
UserDetails
的默认实现User
已实现反序列化器, 如果是开发者自定义的子类, 需开发者自己实现反序列化器.