00:00
前面呢,我们给also服务以及我们的商品服务整合了spring session,并且呢,我们手动测试也在首页取出了最终我能登录成功的结果,当然呢,现在要解决两个问题,第一个是我们这个作用域问题,就是我们发的这个令牌,我们呢是手动的给它放大了整个doin作用域,还有这个作用欲呢,是我们的整个富裕,这个富裕的这个点大家一定呢带上,别忘了,然后接下来我们就要解决第二个问题,就是我们的序列化机制。好,先来看第一个问题,我们来先来参照我们这个官方文档,还是来到我们spring的官方文档来看一下,我们在spring session这一块,我们之前有一个官方文档在这这有一个示例,我们这个示例呢,我们是HP session with red,我们是参照这个文档,包括源代码在这,包括下边,那么这还有一个h DV session with red是用jas序列化,这也有相应的源码,我们可以直接点下去来看,好,那么就来点过来,我们来看它是。
01:00
怎么样使用我们整个杰森序列化来做的,我们点过来,点过来以后呢,我们来看它的整个慢慢里边的,我们来主要看一下配置,首先看配置,看配置里边它有没有配什么,我们点过来,诶配置里边它没有配什么,然后呢,那接下来我们就来看我们这个招va他给的这块代码,这块代码呢,专门有一个东西叫config,哎,就是它的配置,这个配置呢,我们来点过来看一下,有个叫session config,我们主要看这个配我们session相关的东西,所以呢,在这儿session config里边,诶,它给容器中放了一个叫red s,这样呢,我们这个序列化机制就变过来了,所以我们现在要做的事情也就是这样,那现在呢,想要变序列化,还想要变我们整个这个作用欲,相当于我们要自定义一些东西,那么现在来参照我们这个官方文档,那变我们这个序列化机制可以放它,那么来看变作用域这些怎么办?我们还是来参照官方文档,那在官方文档里。
02:00
里边来整合htv with这个red的时候,好这块呢是简单的实例,代码们一直来往下翻,这呢有一个叫user子,要使用各种们这个session的方式,我们主要来看一下我们改这个作用域是来相当于我们自定义cookie的,因为我们来发卡的时候,我们来指定这个卡,卡号呢是这个,但是它的作用域是什么?这是我们相当于是指定了一个cookie,我们所有东西都在cookie里边,作用域是来指定cookie的,所以我们就来看官方文档里边有没有说能自定义cookie的方式,好我们来CF,我就大概来搜一下跟cookie有关的,好我们来看一下我们这个cookie。Cookie呢,这有一个叫cookie sirizeer,这是cookie的序列化器,我们来点过来,我们可以来使用cookie的序列化器,然后呢,我们来暴露cookie的序列化器,作为一个容器中的组件,这样呢,我们可以设置什么?诶我们发现呢,可以设置我们cookie的名字,还可以设置我们路径,还可以设置什么,所以呢,我们现在呢,在这一块我们先要设置cookie,先保证我们给他的这个cookie的作用域是古力ma come整个的大作用域,好所以呢,我们在这来自定义session的时候,那在这虽然整合出来了session,但是我们现在还要自定义啊,就叫鼓励ma,鼓励mail,我们这个session config,这个session config呢,我们先来标一个叫config r,这是一个配置类,然后接下来我们现在给容器中来放一个组件,因为它现在给我们制造这个cookie的时候,它发的这个卡默认呢,它的作用域。
03:42
不大,所以呢,我们现在给它变一下,我们给容器中需要放一个,我们来参照文档,叫cookie civilizer,好,我们就来放一个它,我们把这个cookie civilize,我们来倒进来,叫cookie size,我们给容器中放一个它,那我们return一个,先来写一个now,好来准备一个拗一个cookieize。
04:05
当然这个cookie series laer呢,你点过来发现这是一个接口,那就CTRLH打开它实现,这呢有一个默认实现,那么就用一个default cookie seriesizeer,好,我们就叫default cookieializeer,那么这个S呢,我们来拗出来,我们就创建出了它,把它呢我们给容器中一放,然后呢,我们接下来就可以来自定义规则,自定义什么规则,首先第一个叫set,首先第一个叫cookie的markx edge最大的这个时间,那我们发现呢,默认这都是session期间有效,相当于浏览器一关就没了,那这个时间我们改的话,那就是改这一块我们可以不管,那接下来我们还可以改,我们主要是来改这个作用域doin,好,那我们比如呢就叫set doin,那这个dorin呢,我们现在来看这个doin name,这个name呢,我们以前是这样,每一个域是author域发的,那它这个do曼默认是author域的,但我们现在让它要放大,所以呢,我们把它这个给它放大,明确的给它指。
05:06
地是我们整个古力妙com,我们整个富裕的好,把这个指定好了以后,我们还可以指定,比如我们这一块呢,以前这块session呢,是叫我们的这个session,那么现在呢,可以给它变一下,我们把这个K呢就不叫session了,比如我们就叫鼓励session,好,所以呢,我们还可以给它变它的这个名字,比如我们点一个set cookie的名字,这个cookie的名字呢,我们就叫鼓励session,好鼓励。Session,好,现在这相当于是我们整个商城我们使用spring session改造后的结果,那现在最重要的就是这个序列化机制,那想要整序列化制机制,那么就直接来一个red好。我给容器中放一个red的序列化器就行了,我们来参照我们的这个官方文档,那我们以前这个文档呢,我们专门有一个视例代码,它呢就是来帮我们来给我们容器中放一个spring的这个red的序列化器,来看一下,我们现在呢,是来整合red,来点进整合red的这个文档,那这个文档呢,没有说序列化器的方式,那么就来看下边来直接搜一下,我们有一个叫Siri lazer,我们现在呢,相当于要整session的这个序列化,我们来看一下我们有没有这个session序列化,好,我们这有一个custom,我们自定义我们这个red的这个序列化器,所以呢,我们只需要他说我们只需要呢,自定义一个实现,就是我们创建一个B的名,我们这个名只要叫spring session default,什么red civilize,那么这个civilize呢,是实现了它,那就可以用了,包括官方文档之前也有示例,我们从第三章开始看,第三章那下边呢。
06:50
有一个is red的这个sir,好,我们来点进来,来直接看它的这个文档是怎么写的,包括我们自定义cookie这一块呢,也直接有相关的这个文档,我们可以来看自定义cookie,如果想看那就在这儿,我们现在来主要来看一下我们这个杰S的序列化机制,好来点过来,把它这一块代码呢,我们直接复制过来就行了,好慢,关于我们这个导错类也是非常复杂的,我来点config进来,现在呢,我们来session config我们点过来,现在呢,我们是在employment,它先实现了一个being class load aware实现这个,然后呢,主要是给容器中放这个,好,我们就给容器中放一个它。
07:31
我们现在来把这个方法复制过来,我们来给容器中添加一个,我们不使用这个扎克,Son呢,我们这个redus sirizeer,我们现在呢有一个sir laer,我们来CH,那现在导了阿里巴巴的fast杰son,所以呢,我们专门还有一个叫fast杰森这个S,而我们这个fast杰son这个civil laer,我们英语因为要通用,能用泛型的,所以我们就直接创建一个gene,我们这个fast杰森,好,我们就new一个gene fast杰森S,我们发现呢,我们这没有fast杰森,那我们就来使用这个扎克斯也可以,我就来使用一个扎克斯,那么这个red s就放一个这个就行了,好,那现在呢,来重启一下我们的这个服务。
08:18
我们要重启呢,我们就得重启两个,那们既然在这配置了我们整个的序列化机制,那我们的这个商品服务,既然我们这个cookie的名字这个都变了,那我们商品服务要取肯定也是取这个名字的cookie,所以呢,我们整个要保持我们全网站的整个session的配置都必须是一样的,我们才可以正确的存取,所以我们把这个session的配置呢,我也可以放一份放到这,当然那我们为了方便起见,我们把这个session的配置,我们可以全部放在我们这个common里边好。那么这个session的配置如果我放在这个common里边,那么接下来就要导session的一些这个包,我感觉呢可能有点麻烦,所以我我就现在直接这样吧,就直接把这个配置再复制一个就行了。好,我们这个鼓励ma session的convi我们拿过来,我们给商品服务里边放一份。
09:12
好,我们来点过来,我们给商品服务里边conflictig,我来复制一份来OK,然后呢,商品服务相当于跟also服务都用同一个session配置,都是来获取这些session数据的,然后呢,都是使用这个序列化机制的。好,我们现在呢就来重启一下,把商品服务和我们这个also服务现在全部重启,那我们至此呢,我们把这个全部呢session先来清空,那red里面存在这个session先来清空,好然后呢,我们把这一块来刷新一下,包括我们把我们这一块我们也来清空,那我们这一块呢,现在叫我们这个session,包括我们这个首页,我们把这一块呢也来清空,现在我们来看一下我们的整个完成效果。好,现在两个服务线都来启动起来,那这两个服务启动起来以后,只要我们这个author登录成功,它就会给red里边保存session相关的信息,那我们的商品服务也就会把这个重新再来取出来,好,我们来等待一下,好,现在我们这个商品服务呢,已经全部启动成功,那接下来。
10:15
接下来我们就来重新登录一下,我先来刷新我们这个首页里边,好,先来访问首页,首页里边呢,这有一个500异常,我们来看一下这个异常,这异常就是取我们这个session数据的时候,由为我们这呢会有空,所以我们这取不出来,所以我们在这要保险期间我们要取session里边的数据,我们来看一下我们这一块,我们来到我们的商品服务首页,因为没有登录,那么这一块呢就肯定取不到,所以我们在这要获取数据,肯定要判断,那么就来写一个三元运算,它它它等等空吗?那如果是空的,那我们就来返回空串,否则我们就取出这个数据,Login user login user里边的我们的nickname来取出这个就行了,好。
11:05
我们来看一下我们这个是不是叫nickname member response VO。那我们主要来取出这个好,这个名字呢,必须一样,我来CTRLF9,好,我们页面刷新一下,我们现在来到我们这个首页,我来刷新。现在呢,我们首页没有登录,所以我们取不到什么信信息内容,现在我们来重新登录一下,来点你好,请登录,那现在来社交登录,我来点微博登录,只要登录成功就会跳回首页来看一下效果好,我们现在呢,登录成功,登录成功来到我们这儿,他说in外类的cookie do说我们非法的这个cookie域名,这个域名呢叫鼓励me.com,那相当于要放大到我们这个子域上,那么这个子域呢,我们不宜点开始,好,我们把这个子域们来改一下,那session这一块我们把这个子域好,那现在呢,放大到这个富语名,我们来看能不能啊放大到富语名,包括我们来改一下我们的商品服务,现在author包括商品服务来都来改一下,好来重新来启动,启动我们的author服务,以及商品服务来重新启动,那先来看red里边有没有保存数据,好,Reload,好,那么现在red里边刚才登录成功session这个数据呢,已经有了,们把这个重新清空一下,好,我们来刷新一下我们的red。
12:22
来重新测试,我们看一下我们的整个效果,好,现在我们这个启动成功,那好,我们接下来先来清空我们以前对应的相关cookie,好这一块呢,什么都没有,我们就来重新来走一遍流程。我来,先来访问我们的首页。我们没有登录,我们现在来登录。那登录呢,我们要用社交登录,好,我们来点微博,那登录成功我们跳回来,诶我们看到你好,请登录for,那原因呢,就是我们这个登录的这个服务,Author服务,我们在这儿只要一登录成功,我们就会放一个session,而且放session的时候呢,我们放大了作用域,我们放大了它的富裕里边,而且我们的名字叫鼓励session,现在呢,来到我们这个商品服务。
13:10
好,我们把这个呢放在一起,那来到我们这个商品服务,我们商品服务呢,同样是可以获取到我们的鼓励session,那带了同样的卡号,我们由于session呢都是统一存储到red里边,所以呢我们同时又能取出我们整个数据,所以现在呢,我们就完全解决了我们子域的session共享问题,以及我们服务复制的session共享问题,我们服务无论复制多少份,我们session统一存储,然后呢,只要是我们这个鼓励ma com下边的无论是任何子域,我们全部能用到这个session数据,而且我们session保存的时候,我们之前确定了序列化机制,我们现在来看一下我们保存的这个数据来点开,诶我发现呢,我们现在保存的这个log user,这就是一个杰森样子的这个序列化数据,那至此,那我们整个的session的解决方案,我们就。
14:00
做完了我们使用spring session,首先自定义了我们session的作用域是我们整个富裕,我们整个网站,然后呢,接下来又把session统一存到red里边,以后任何服务因为都带的是同一个卡,无论是哪个服务登录成功发过来的卡,因为带的是同一个卡,所以我们以后呢,都可以在这个地方来进行存取,所有服务存取session在一个地方,而且所有服务呢,用的session ID都是一个,所以呢,他们。就可以来进行session共享,更甚至于这个服务,A服务给session里边放的数据,那B服务的页面也能取出来,所以呢,我们都可以跨机器的页面来进行数据的共享,因为我们整个session呢都已经共享了。
我来说两句