# ssoAuth **Repository Path**: esoft/ssoAuth ## Basic Information - **Project Name**: ssoAuth - **Description**: 为了适应SOA分布式跨服务(简单可以说是多个JVM)实现一次登入,多应用共享和管理SESSION的方式,对SESSION相关管理和装饰抽取到一个工程,用于多应用的引用。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2018-05-25 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![输入图片说明](https://gitee.com/uploads/images/2018/0322/101230_270797cd_1100443.png "屏幕截图.png") 关键对象: DistributedSession(分布式Session): 实现了 HttpSession, Serializable两个接口。期中实现HttpSession是为了接管每次请求会话Session;自定义session的id用于多应用共享此Session的标示,在地址重定向中以token=XX的方式传递,在请求中以headers(ihome-token,XXX)方式传递,在应用内部以Cookie方式存储,存储变量为SHARE_SESSIONID;实现Serializable是为了,能够将对象与Redis交互,也就是能够存储到内存数据库Redis中。对象中定义了关键属性distributedSessionManager(接口),用于实现对象与Redis的管理(也就是本地Session与redis存储中的对象redis的同步操作,期中是否有变化是以对象唯一性也就是对象的HashCode是否相等来辨别【本地session对象和redis中存储的session对象】) DistributedSessionRequest(分布式请求request):继承了HttpServletRequestWrapper 用于接管每次请求的Request,也就接管了request对Session的操作。关键属性有DistributedSessionManager接口,用于request对session的同步和创建管理;distributedSession ,本次请求所持有的Session对象。 关键过滤器: DistributedSessionFilter(分布式过滤器):拦截每次请求,将本地的Request交由分布式DistributedSessionRequest 接管,关键属性DistributedSessionManager接口,将容易session的管理接口注入到分布式DistributedSessionRequest中用于当前分布式DistributedSessionRequest对其拥有的分布式DistributedSession进行管理和同步。 ShareSessionFilter(共享Session过滤器):用于每次请求对分布式Session同步标示ID管理。 LogoutProcessFilter(登出过滤器):用于登出时,清楚本地的DistributedSession和redis服务中的DistributedSession对象。 CompositeFilter(过滤器链):用于将配置的过滤器进行队列势加载,以便顺序执行。从而,保证分布式DistributedSessionFilter的执行时在权限过滤器执行之前执行,从而在分布式系统在权限判断前同步redis中匹配的分布式DistributedSession对象。 CrossOriginFilterBean(跨域访问过滤器):用于在跨域请求时针对不同环境设置的支持跨域请求的特殊参数。