一种session获取方法与流程

文档序号:36008976发布日期:2023-11-17 01:10阅读:24来源:国知局
一种的制作方法

本发明涉及数据处理,特别涉及一种session获取方法。


背景技术:

1、shiro作为一个java安全框架,提供了会话管理的功能。session称为会话,在负载均衡多个web实例的情况下,需要让shiro支持session的共享,目前行业内多采用redis作为共享session的存储器,采用的方案有两种:第一种是定制shiro的sessionmanager(session管理器)的sessiondao;第二种是采用spring redis session直接把web容器的session代理。

2、在利用基于shiro的spring redis session的方案时,spring redis session将web容器的session代理后,只要web容器发生尝试获取session的动作,若当前请求没有session,那将会创造session到redis中。这样会造成很多无用的session堆积在redis中。例如:有些web项目,会开放一些访问入口给外部作为api调用,这些入口是不需要session的,但调用的某个环节会统一获取session(比如记录访问日志),此时就会在redis中产生一个无用的session,尤其是当这些入口的访问特别多时,就会生产数量特别巨大的无用session。


技术实现思路

1、为了克服现有技术存在的缺陷,本发明提供一种session获取方法,以解决上述的问题。

2、本发明解决其技术问题所采用的技术方案是:一种session获取方法,包括以下步骤:

3、s10:建立过滤器springsplitredissessionfilter,其中,所述过滤器springsplitredissessionfilter继承了过滤器springredissessionfilter;

4、s20:在通过过滤器springsplitredissessionfilter获取用户请求的请求头的referer的值和获取用户请求的url中的.html结尾或.do结尾后,利用springredissessionfilter生成httpservletrequest接口类型对象和httpservletresponse接口类型对象的代理,得到包装器sessionrepositoryrequestwrapper和包装器sessionrepositoryresponsewrapper,然后通过包装器sessionrepositoryrequestwrapper得到spring redis session代理后的session。

5、值得说明的是,所述步骤s20包括:

6、通过过滤器springsplitredissessionfilter获取用户请求的请求头,判断请求头中是否有referer的值;

7、若否,则不用springredissessionfilter生成httpservletrequest接口类型对象和httpservletresponse接口类型对象的代理;

8、若是,则判断用户请求的url是否以.html或.do结尾;若否则不用springredissessionfilter生成httpservletrequest接口类型对象和httpservletresponse接口类型对象的代理;若是则使用springredissessionfilter去生成httpservletrequest接口类型对象和httpservletresponse接口类型对象的代理。

9、具体地,在所述步骤s20后,还包括步骤s30和步骤s40;

10、步骤s30包括:建立序列化和反序列化的工具springsessionshiroserializer;

11、步骤s40包括:利用序列化和反序列化的工具springsessionshiroserializer将shiro保存到session内。

12、可选的,所述步骤s40包括:所述序列化和反序列化的工具springsessionshiroserializer在序列化savedrequest类型对象时,先将savedrequest类型对象转化为springsessionsavedrequestadapter类型对象,然后将springsessionsavedrequestadapter类型对象序列化到redis中。

13、优选的,所述步骤s40还包括:所述序列化和反序列化的工具springsessionshiroserializer在反序列化savedrequest类型对象时,先从redis中反序列化出springsessionsavedrequestadapter类型对象;然后将springsessionsavedrequestadapter类型对象转化成springsessionsavedhttpservletadapter类型对象,实现httpservletrequest接口;再通过savedrequest类型的构造函数savedrequest(httpservletrequest request)建立savedrequest类型对象。

14、值得说明的是,所述步骤s40还包括:所述序列化和反序列化的工具springsessionshiroserializer在序列化simpleprincipalcollection类型对象时,先取出用户信息对象,然后对用户信息对象序列化。

15、具体地,所述步骤s40还包括:所述序列化和反序列化的工具springsessionshiroserializer在反序列化simpleprincipalcollection类型对象时,先反序列化出用户信息对象,然后通过simpleprincipalcollection类型构造函数simpleprincipalcollection(object用户信息,string realmname)建立simpleprincipalcollection类型对象。

16、本发明的有益效果在于:在所述session获取方法中,通过referer的值和url中的.html结尾或.do结尾,能精准确定需要产生的session是否有用,并且只产生有用的session,如此,就能避免无效session的产生,从而避免产生数量特别巨大的无用session,降低了系统的冗余性。



技术特征:

1.一种session获取方法,其特征在于,包括以下步骤:

2.根据权利要求1所述一种session获取方法,其特征在于,所述步骤s20包括:

3.根据权利要求2所述一种session获取方法,其特征在于:在所述步骤s20后,还包括步骤s30和步骤s40;

4.根据权利要求3所述一种session获取方法,其特征在于,所述步骤s40包括:所述序列化和反序列化的工具springsessionshiroserializer在序列化savedrequest类型对象时,先将savedrequest类型对象转化为springsessionsavedrequestadapter类型对象,然后将springsessionsavedrequestadapter类型对象序列化到redis中。

5.根据权利要求4所述一种session获取方法,其特征在于,所述步骤s40还包括:所述序列化和反序列化的工具springsessionshiroserializer在反序列化savedrequest类型对象时,先从redis中反序列化出springsessionsavedrequestadapter类型对象;然后将springsessionsavedrequestadapter类型对象转化成springsessionsavedhttpservletadapter类型对象,实现httpservletrequest接口;再通过savedrequest类型的构造函数savedrequest(httpservletrequest request)建立savedrequest类型对象。

6.根据权利要求5所述一种session获取方法,其特征在于,所述步骤s40还包括:所述序列化和反序列化的工具springsessionshiroserializer在序列化simpleprincipalcollection类型对象时,先取出用户信息对象,然后对用户信息对象序列化。

7.根据权利要求6所述一种session获取方法,其特征在于,所述步骤s40还包括:所述序列化和反序列化的工具springsessionshiroserializer在反序列化simpleprincipalcollection类型对象时,先反序列化出用户信息对象,然后通过simpleprincipalcollection类型构造函数simpleprincipalcollection(object用户信息,string realmname)建立simpleprincipalcollection类型对象。


技术总结
本发明公开了一种session获取方法,属于数据处理技术领域,包括以下步骤:S10:建立过滤器springSplitRedisSessionFilter;S20:在获取用户请求的请求头的referer的值和获取用户请求的url中的.html结尾或.do结尾后,利用springRedisSessionFilter生成HttpServletRequest接口类型对象和HttpServletResponse接口类型对象的代理,得到包装器,通过包装器得到spring redis session代理后的session。所述session获取方法解决了现有的方案会生产大量的无用session的问题。

技术研发人员:李宝君,何玉华
受保护的技术使用者:全通金信控股(广东)有限公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1