zoukankan      html  css  js  c++  java
  • 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字段


    结束

     

  • 相关阅读:
    CSS伪元素
    leetcode
    软件镜像下载
    VUE项目问题
    js定时操作
    div 禁止点击
    JS String 与 Object 转换
    实用类
    XML文件的应用
    Socket编程
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11967849.html
Copyright © 2011-2022 走看看