Spring cloud微服务安全实战-5-11实现基于token的SSO(1)

基于服务器session的SSO的方案,用户的登陆状态都是存在服务器端的

基于浏览器cookie的token实现一个sso,在原来的基础上做进一步的改造。让他不依赖session。而是完全由cookie里的token来决定。
给前端颁发token的时候不是写在前端的session中,而是cookie里面

之前我们拿到token是存到session里面。这里注释掉。



token的值

域名设置的是imooc.com。那么所有以immoc.com结尾的二级域名,包括imooc.com admin.immoc.com 、gateway.imooc.com.
全都可以访问到这个token


sessionTokenFilter

z这里之前是从session中拿到token。然后加到请求头里面。

cookieTokenFilter


这里要修改成从从cookie里面拿token的值。这里的session如果为空就什么不去做,那么可以自己再加一个cookie的Filter




声明称Spring 的 component组件







把这两段代码复制过来。请求的上下文和request对象拿到

通过单独的getCookie的方法回去到cookie中的token





需要一个restTemplate来发起请求



写一下getCookie的方法

那么cookieFilter就写到这里。

 

前端代码修改

前端的构造函数里面,发送请求到api/user/me

api开头的请求都会转到网关上,所以上面的/api/user/me是转到网关上的

网关代码修改

写一个过滤器,直接处理掉/user/me 加了一个user的转发,,转发到哪里去无所谓。因为我们并不真正的把它转出去,而是直接在网关里把它处理掉了。

写一个MeFilter

继承ZuulFilter

声明称Spring的Bean

只有当前的请求是/user/me的时候才处理这个请求。只有当请求是/user/me的 才走这个过滤器的下一步。



刚才已经说了。从cookieFilter这个过滤器转发出来的请求,要么转发不出去,直接跳到认证的流程上,

只要出去的请求肯定是带着一个有效的access_token

那么在我这个Authorization过滤器里面,如果你带着这个有效的access_token

最终会往请求头里面加一个username字段


结束

 

猜你喜欢

转载自www.cnblogs.com/wangjunwei/p/11967849.html