点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]
♪ 点击上方绿标 收听SpringCloud之SSO 单点登录
sso单点登录思路:
1、访问分布式系统的任意请求,被Zuul的Filter拦截过滤
2、在run方法里实现过滤规则:cookie有令牌accessToken且作为key存在于Redis,或者访问的是登录页面、登录请求则放行
3、否则,将重定向到sso-server的登录页面且原先的请求路径作为一个参数;response.sendRedirect("http://localhost:10010/sso-server/sso/loginPage?url=" + url);
4、登录成功,sso-server生成accessToken,并作为key(用户名+时间戳,这里只是demo,正常项目的令牌应该要更为复杂)存到Redis,value值存用户id作为value(或者直接存储可暴露的部分用户信息也行)设置过期时间(我这里设置3分钟);设置cookie:new Cookie("accessToken",accessToken);,设置maxAge(60*3);、path("/");
5、sso-server单点登录服务负责校验用户信息、获取用户信息、操作Redis缓存,提供接口,在eureka上注册
sso-server
首先我们创建一个单点登录服务sso-server,并在eureka上注册
login.html
我们这里需要用到页面,要先maven引入thymeleaf
<dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-thymeleafartifactId> dependency>
<html xmlns:th="http://www.thymeleaf.org"><head> <meta charset="UTF-8"> <title&g