第三方登录
Oauth2.0
Session共享问题
session原理
1、不能跨不同的域名共享
分布式下session共享问题
2、分布式系统session不能共享
3、集群服务session不同步
Session共享问题解决
session复制
客户端存储
hash一致性
统一存储
Session共享问题解决-不同服务,子域session共享
放大作用域,实现子域共享
SpringSession 实现分布式 Session
①、引入依赖
<!-- 引入redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 整合springsession -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
②、yaml配置:
# 存储类型:
spring:
session:
store-type: redis
# 超时时间
server:
servlet:
session:
timeout: 30m
③、@EnableRedisHttpSession
标在主启动类上
④、增加session配置类
默认发的令牌作用域是当前域名;需要解决子域共享问题,及应使用json的序列化方式序列化数据
@Configuration
public class GulimallSessionConfig {
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
//放大作用域,实现子域共享
cookieSerializer.setDomainName("gulimall.com");
cookieSerializer.setCookieName("GULISESSION");
return cookieSerializer;
}
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
return new GenericJackson2JsonRedisSerializer();
}
}
社交登录流程
一、支付宝登录
二、微信登录
【待完善】
三、微博登录
【待完善】
四、QQ登录
【待完善】