1、Dalston版本 session.invalidate()后再request.getSession()就能新建session换了sessionId。升级后需要如下session.invalidate()且让cookie过期,再request.getSession()才能换sessionId,否则sessionId为同一个
session.invalidate();
Cookie cookie = request.getCookies()[0];//获取cookie
cookie.setMaxAge(0);//让cookie过期
2、Dalston版本 登录后session替换需要将sessionId设置到Cookie里面,升级到Greenwich版本不需要,会自动设置
Cookie cookie = new Cookie("SESSION", session.getId());
cookie.setPath("/");
cookie.setHttpOnly(true);
if (!ObjectUtils.isEmpty(environment.getActiveProfiles())
&& "local".equals(environment.getActiveProfiles()[0])) {
cookie.setSecure(false);
} else {
cookie.setSecure(true);
}
response.addCookie(cookie);
3、CacheManager修改
@Bean
@Profile("!ut")
public CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(3000));// 默认超时时间
return RedisCacheManager
.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
.cacheDefaults(redisCacheConfiguration).build();
//注释的为旧版本
//默认超时时间,单位秒
// cacheManager.setDefaultExpiration(3000);
// //根据缓存名称设置超时时间,0为不超时
// Map<String, Long> expires = new ConcurrentHashMap<>();
// cacheManager.setExpires(expires);
// return cacheManager;
}
4、为避免调用401,服务端需关闭security校验,如下(目前除了弹出登录框登录外,暂时找不到其他可以通过设置通过校验的方式,有知道的小伙伴可以分享下)。
@Configuration
@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().csrf().disable();
http.authorizeRequests().anyRequest().permitAll().and().logout().permitAll();
}
}
5、eureka版本升级后security会自动开启验证,导致服务注册不上,需要eureka应用关闭crsf校验
@EnableWebSecurity
static class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/eureka/**");
super.configure(http);
}
}
6、 版本升级后依赖的mysql-connector-java版本为8.0以上,MySQL8.0的驱动包跟之前不一样了,默认时区是全球统一时间 (UTC),北京时间是 UTC+8。
需要在在 jdbc 驱动的 url 上加上serverTimezone=Asia/Shanghai
如果不加 serverTimezone 或设置为 UTC 都是差 8 个小时,设置成为上海的时区就行
除以上外,各种版本升级后的包也要对应的替换掉