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字段


    结束

     

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11967849.html
Copyright © 2011-2022 走看看