授权模式改造成了Authorization code完成了改造的同时也实现了SSO。微服务环境下的前后端分离的单点登陆。
把admin的服务重启。刷新页面 并没有让我去登陆,直接就进入了首页。
order的API控制台
只要你在认证服务器上的session没过期。认证服务器就知道你是谁,他就不会让你输入用户名密码了。直接跳回到客户端应用。
一共有三个有效期。
退出操作
退出的时候。现在前端服务器清空session,认证服务器也需要清空session
在前端服务器退出后,再跳转到认证服务器执行退出。logout是spring security默认的退出路径
这时候跳转到了认证服务器。
点击退出后
如果再次输入账号密码登录
这时候没跳转会前端, 这是个404的页面。
这是因为我们之前触发的登陆页面的请求,是下面这样的一个请求
这里他是不知道是要跳转回admin的应用的,所以默认进去了自己的主页。 :9090/根目录,这个主页没做任何的处理 所以是一个404页面。
退出操作优化
退出的时候加一个参数redirect_uri
认证服务器改造
首先要找到处理logout这个请求的代码。
它会拦截logout的方法,然后
拦住以后会生成一个页面出来。
页面上很简单,上面一个提示语,问题你是不是确认要退出。点了按钮就会提交这个表单。
我们来复制这个类,首先在我们的代码里面建一个一模一样的包
。创建一个一模一样的类
复制整个代码到新的类里面。因为java的加载机制,所以我们自己写的这个类 会优于Spring Security原来的类 ,先加载。如果他发现有这样一个类,就不会再去加载Spring jar包里面的类了。
提示语和button都去掉,然后加上一段js代码
加一个隐藏域,里面是从url获取到的参数 redirect_uri
成功以后的处理器
实现LogoutSuccessHandler接口。
声明称Spring的Component 然后 接收redirect_uri参数并跳转。
这里是退出成功以后触发的
修改Server的配置
让它使用我们退出的处理器。在OAuth2WebSecurityConfig
就是我们之前在Spring Security源码看到的配置
把上面代码复制到我们的配置文件内。
把我们自己写的退出的处理器注入进来。
formLogin这里也可以做一些改造。可以自己指定登陆的页面,这样就是自己自定义登陆的页面
测试
服务器重新启动
刷新admin的首页,然后获取订单信息
点击退出按钮。又跳到了一个登陆页面。
这是退出后,回到amdin,又从admin发送 了一个authorize请求触发的登陆
这个时候再去做登陆
再登陆进去 就会进去到我们的首页上来。
结束
来源:oschina
链接:https://my.oschina.net/u/4415923/blog/3337053