一种制造技术

技术编号:39408594 阅读:4 留言:0更新日期:2023-11-19 16:00
本发明专利技术公开了一种

【技术实现步骤摘要】
一种session获取方法


[0001]本专利技术涉及数据处理
,特别涉及一种
session
获取方法


技术介绍

[0002]shiro
作为一个
Java
安全框架,提供了会话管理的功能
。session
称为会话,在负载均衡多个
web
实例的情况下,需要让
shiro
支持
session
的共享,目前行业内多采用
redis
作为共享
session
的存储器,采用的方案有两种:第一种是定制
shiro

SessionManager(session
管理器
)

sessionDAO
;第二种是采用
spring redis session
直接把
web
容器的
session
代理

[0003]在利用基于
shiro

spring redis session
的方案时,
spring redis session

web
容器的
session
代理后,只要
web
容器发生尝试获取
session
的动作,若当前请求没有
session
,那将会创造
session

redis


这样会造成很多无用的
session
堆积在
redis


例如:有些
web
项目,会开放一些访问入口给外部作为
API
调用,这些入口是不需要
session
的,但调用的某个环节会统一获取
session(
比如记录访问日志
)
,此时就会在
redis
中产生一个无用的
session
,尤其是当这些入口的访问特别多时,就会生产数量特别巨大的无用
session。

技术实现思路

[0004]为了克服现有技术存在的缺陷,本专利技术提供一种
session
获取方法,以解决上述的问题

[0005]本专利技术解决其技术问题所采用的技术方案是:一种
session
获取方法,包括以下步骤:
[0006]S10
:建立过滤器
springSplitRedisSessionFilter
,其中,所述过滤器
springSplitRedisSessionFilter
继承了过滤器
springRedisSessionFilter

[0007]S20
:在通过过滤器
springSplitRedisSessionFilter
获取用户请求的请求头的
referer
的值和获取用户请求的
url
中的
.html
结尾或
.do
结尾后,利用
springRedisSessionFilter
生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理,得到包装器
SessionRepositoryRequestWrapper
和包装器
SessionRepositoryResponseWrapper
,然后通过包装器
SessionRepositoryRequestWrapper
得到
spring redis session
代理后的
session。
[0008]值得说明的是,所述步骤
S20
包括:
[0009]通过过滤器
springSplitRedisSessionFilter
获取用户请求的请求头,判断请求头中是否有
referer
的值;
[0010]若否,则不用
springRedisSessionFilter
生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理;
[0011]若是,则判断用户请求的
url
是否以
.html

.do
结尾;若否则不用
springRedisSessionFilter
生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理;若是则使用
springRedisSessionFilter
去生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理

[0012]具体地,在所述步骤
S20
后,还包括步骤
S30
和步骤
S40

[0013]步骤
S30
包括:建立序列化和反序列化的工具
SpringSessionShiroSerializer

[0014]步骤
S40
包括:利用序列化和反序列化的工具
SpringSessionShiroSerializer

shiro
保存到
session


[0015]可选的,所述步骤
S40
包括:所述序列化和反序列化的工具
SpringSessionShiroSerializer
在序列化
SavedRequest
类型对象时,先将
SavedRequest
类型对象转化为
SpringSessionSavedRequestAdapter
类型对象,然后将
SpringSessionSavedRequestAdapter
类型对象序列化到
redis


[0016]优选的,所述步骤
S40
还包括:所述序列化和反序列化的工具
SpringSessionShiroSerializer
在反序列化
SavedRequest
类型对象时,先从
redis
中反序列化出
Spr本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种
session
获取方法,其特征在于,包括以下步骤:
S10
:建立过滤器
springSplitRedisSessionFilter
,其中,所述过滤器
springSplitRedisSessionFilter
继承了过滤器
springRedisSessionFilter

S20
:在通过过滤器
springSplitRedisSessionFilter
获取用户请求的请求头的
referer
的值和获取用户请求的
url
中的
.html
结尾或
.do
结尾后,利用
springRedisSessionFilter
生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理,得到包装器
SessionRepositoryRequestWrapper
和包装器
SessionRepositoryResponseWrapper
,然后通过包装器
SessionRepositoryRequestWrapper
得到
spring redis session
代理后的
session。2.
根据权利要求1所述一种
session
获取方法,其特征在于,所述步骤
S20
包括:通过过滤器
springSplitRedisSessionFilter
获取用户请求的请求头,判断请求头中是否有
referer
的值;若否,则不用
springRedisSessionFilter
生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理;若是,则判断用户请求的
url
是否以
.html

.do
结尾;若否则不用
springRedisSessionFilter
生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理;若是则使用
springRedisSessionFilter
去生成
HttpServletRequest
接口类型对象和
HttpServletResponse
接口类型对象的代理
。3.
根据权利要求2所述一种
session
获取方法,其特征在于:在所述步骤
S20
后,还包括步骤
S30
和步骤
S40
;步骤
S30
包括:建立序列化和反序列化的工具
SpringSessionShiroSerializer
;步骤
S40
包括:利用序列化...

【专利技术属性】
技术研发人员:李宝君何玉华
申请(专利权)人:全通金信控股广东有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1