00:00
好,前面呢,我们这个第一个系统基本调试成功了,我们来访问employee没有登录,我们跳到登录服务器,只要登录成了关键重定向回来的时候给他一个令牌,他判断呢有这个令牌,然后呢,就在这儿,要把这个令牌保存到会画里边,令牌对应的用户保存到会话里边,以后呢,再去登录会话里边已经有,那就OK了。所以呢,接下来我们要做的就是第二个假设我们有第二个系统,我们第二个系统呢,比如我们访问boss这个请求,然后呢,由于我们第一个系统已经在我们登录服务器登录过了,那们这三个呢,都是互相授信的系统,彼此是信任的,那我们希望呢,就是第二个系统不用去登录,我们就直接可以来访问它受保的资源,那默认相当于它也是已经登录过的,因为第一个系统跟第二个系统的逻辑基本都一样,但登录的这个客户端逻辑都一样,我呢把这个复制一份好,我复制过来,我们呢就叫兰二。这个C2我拿过来以后,然后我把这个client client2我们来改一下我们相关的这个配置,我们让client client2的端口是8082,包括我们来改一下POM这一块模块,模块的名字,它呢这都是可能288082好,那么现在呢,这个假设是我们第二个系统8082,那么希望呢,它里边有一个请求,比如我们把这个请求呢,我们来重新改一下,我们以前呢,有一个叫hello controller,这个hello,我们现在呢,原来有一个employees,现在呢有一个boss好假设呢还是这个boss请求我们想要进行处理,那怎么办?我们这个boss呢,还是要跳到这儿,但是呢,我们登录成功以后,要跳回的是C22COM8082的boss请求啊,就是这个请求好,我们把这一块呢,稍微来刷新一下,来看一下我们的CLIENT2客户端,这是一我们把CLIENT2模块也加进来,这是我们的客户端,二好,我们点过来,那现在呢,我们再来启动CLIENT2CLIENT。
01:58
二呢,我们先来看一下,它呢是在8082端口登录服务器的地址呢,这都是固定的,好我们来启动C2,我们在这儿呢,来启动一下,我们在C2里边,我们把它的这个主类,我们就叫克兰2APPLICATION,好把这个呢拿过来来启动一下它走现在呢,我们还是访问C兰二请求,那这一块呢,我们这个主类我们一定要改一下名字,Shift f6,好,我们在这儿来改一下,直接rename file,我们把这个文件名呢重新来起一个,现在叫C2客户端,走,那现在来启动第二个客户端,第二个客户端呢是8082,我们希望现在浏览器访问第二个客户端受保护的内容叫boss,好,所以接下来我就来访问现在呢我们这个浏览器,浏览器呢,现在想要访问客户端二,客户端二呢,在这好。
02:49
我们这个第11,然后呢,我们现在第12,我们这个浏览器访问,现在呢,我们来要访问的这个页面是我们的C2来复点过来,我们的地址叫client2.com,我们的8082,我们现在呢相当要访问它好它下边呢有一个叫boss获取所有的这个boss的这个请求,我们复制过来,现在呢,我们这个浏览器要访问客户端二了,但这个客户端二呢没有登录,但是客户端一已经登录了,我们想希望他呢能免登录来看一下这个地址。
03:25
好浏览器访问可兰2BOSS,然后我们来看一下效果,那可能2BOSS我来回撤,由于没有登录呢,它还是跳到我们这个登录服务器来登录,代码呢,还是之前的代码,但现在有问题啊,因为我们这个一这都能访问employee都已经登录了,但是呢,他现在可能他二访问的时候,他判断没有登录,那判断没有登录的原因,那就是在s so server这一块,S so server他没有记住上一个人来到这儿已经登录了,所以他怎么记住这个已经登录了,我们在这儿呢,稍加一个逻辑来看一下,我们s so server主要呢,就是在这儿,我们在这儿呢,只要登录成功以后,我们把这一块呢上个颜色,那只要登录成功以后,我们现在呢,就会去去我们的原来的这个页面重定向过去,但是我们还会把当前用户保存过来,重定向的时候呢,带上这个用户令牌信息,但为了下一次,为了。
04:26
下一次别的系统想要登录,我得知道上一个系统已经登录了,我们只有一种做法,那就是F12,我来看控制台,因为浏览器呢,访问s so so com会带上so so com的所有的cookie,所以呢,假设只要有人登录了,能给这个s so sor com我们来搞一个cookie,比如我们就叫s so talkingken这个ton呢,就是刚才登录的那个人的令牌信息,所以呢,无论是CLIENT1系统,CLIENT2系统还是client client3系统,只要呢,它能跳到我们这个页,我们来看一下,我把这一块呢删掉,来回车,所以我们来看一下监控整个请求,我们来访问boss系统,Boss呢没登录,我们命令它重定向到server log页,然后呢,只要重定向到server log页,我们浏览器呢,就会带上我们s so server这个域名下的所有cookie,所以我们来看request header里边就一个cookie,叫s so token,那就是这一串,所以呢。
05:26
我们为了能记住登录状态,即使是上一个人登录了,我们就应该给我们登录服务器留一个痕迹,这个痕迹呢,其实是留给浏览器的,告诉浏览器,诶你这个浏览器之前呢,在s so sor登录过,这个痕迹呢,那就是cookie,所以呢,我们在这唯一要做的一件事就是除了处理我们这个登录请求,我们要把这个用户状态信息的这个token我们要返回出去外,第二个我们还要给给我们当前系统,给当前系统留一个记号,留一个记号,这个记号呢,就是我们说的这个cookie来表示你曾经登陆过,这个cookie呢,我们就叫s so token,那么单点登录的这个令牌,所以大家注意,那么这一块呢,特别关键,那单点登录的这个令牌,我们是在登录服务器,登录服务器,只要有任何一个人登录成功了,那就给这个人的浏览器留一个。
06:26
品牌,所以来到登录这一块,大家看我现在呢,相当于把用户先在reddi里面存起来了,但是为了有标识,我这么来做,如果这块逻辑不清楚,大家先照着做,我们一会就梳理清楚了。好,我现在加一个http so response,因为我们要命令浏览器保存一个cookie,所以我们拿到它的响应,这个响应呢,我们来按cookie来创建一个cookie,好,我就来用一个cookie。那这个cookie呢,我们就叫s so token来,这个cook叫什么名字那都可以配置一下,好,我们现在来写S,我们这个cookie的名叫ss token cookie的值那就是把这个用户的这个UUID我存起来,然后呢,我给它放进去,这个cookie默认的有效期那就是当前会画,只要浏览器一关,那我们的这个s so server对应的所有的cookie那就没有了,诶我们就把这个cookie它清掉,所以呢,我们现在给它留一个cookie,只要有人登录成功,我们给它留一个cookie。
07:34
所以我们现在来看重新一个请求,把三个全部重新启动,而且呢们把这个浏览器我现在来关掉,F12,我们把该清空的所有东西我来全清掉,好这个解3ID我也清掉,那让第一个系统呢,假设没有登录,那现在来看完整的整个请求流程,那现在第一个系统没有登录,第二个系统也没登录,那现在这个登录服务器,不管是一系统还是二系统全部呢,都要去登录服务器来进行登录,登录服务器只要登录成功了,会给red里边保存当前的用户信息,好我们现在来看一下效果,现在呢,我们来访问EMPLOYEES1F12。
08:14
是不是我们单点登录流程呢?正好对照着来来访问CLIENT1EMPLOYEES,由于没登录,我们登录就是判断session里边有没有东西,或者你重电一下回来带token也行,咱们现在来判断走。好,没有登录,回到我们的登录服务器,我们第一个请求employees没登录,所以呢,我们是302让它重定向response,重定向到指定位置,那指定位置呢,那就重进向道,我们这个login请求,好login请求呢,接下来我们就来给他登录一下,走,我来登录,只要我一登录成功,我点一个登录,登录呢我们执行的是do loggan方法,好,我们来看一下这个do log,我们一执行do logon。这个do log只要一执行登录成功以后,大家注意我们呢,Location命令浏览器要重定向,所以大家看我们应该是来到这一块,账号密码都输了,然后呢,我们第九步都登录成功了,登录成功呢,我们命令浏览器重定向,这是第一个命令,然后第二个命令,注意response里边不止有重定向的命令,还有一个叫set cook的命令,Set cook命令就是放了一个token叫s so token等于UUID,那这个放的不对,那么这个UID是在这。
09:32
所以呢,接下来我们还会给一个命令,相当于要保存一个token,但是呢,这个token是以set cookie的方式,由于这个命令我们是哪次请求发给浏览器的,看我们是s so server这次请求它的响应发给浏览器的,所以浏览器相当于就应该将我们这个cookie保存在我们当前请求是s so server,现在就保存到了s so server com这个域名下,所以只要我们访问s so server com来看一下s so server com,好那么只要访问我们这个人,那我们这个人上边我们之前呢,有一部让他保存cookie,我们这个cookie呢就有了,虽然值不正确,好我们来重新来一下,把这个server呢重启一下我们现在cookie的值给它整对。
10:20
走好,我们现在来看一下效果,我们把这一块呢全部清空,包括呢,我们把已经登录的这个CLIENT1的这个状态信息,我们也来清空,只要登录了它就会有session的信息,好我们来看一下它的这个session的这个信息,把这个情况好,现在呢就没登录了,好我们重新来监控。把这一块全部删掉,访问客户端一他没有登录给我们来到登录服务器走,来到登录服务器,然后呢,登录服务器,我们填完账号密码登录服务器,关键的一步就在这,我们只要执行登录请求,然后呢他会做两件事,把用户信息存到red里边,是用UUID存的,然后呢,给当前服务器留一个cookie,就是这个UUID,所以我们来看,只要我一点登录走。
11:08
我点击登录,那do loggan执行成功,杜,LOGGAN1执行成功,相当于我们这一块呢,登录成功,登录成功要做两件事,不止要命令浏览器重定向到我们这个地址,而重定向的时候呢,给他带了这个token,而且登录成功,我们还给我们当前服务器保存了一个cookie,因为我们能看到这个网络请求我们的这个employees,我们重定下回employees,上一步呢是登录,登录呢执行完了以后,给浏览器的响应里边有两个命令,一个是保存cookie,一个是重定向,所以浏览器呢做两件事,给当前域名,当前域名呢就是so server,他呢先保存cookie,所以呢,他把这个cookie放到这,我来刷新一下,好,我们当前呢留了一个cookie,是476B,这个cookie呢,就是我们重叠下去给你带的这个talkingn,相当于我用户的唯一标识信息,那么给s so server留了cookie,然后呢,我们又重淀下回你的。
12:09
Employee s,我们一这个客户端,那留了这个cookie有什么用,接下来就有大用了。看我们现在呢,留了cookie好,现在除了重定向命令它这而且呢,我们还留下cookie好,那现在呢,再给这儿来加一个,现在呢十十的第二个事情好,我们这个第十步呢,要做的第一件事情就是重定向,然后呢,再要做的第二件事情就是命令浏览器保存cookie。命令。览器保存cookie,这个cookie的名呢叫s so talking,值呢,就是用户的这个VEIDUID,那这个值呢,就是token的这个UUID。所以呢,浏览器。要做到11步,第一件事是重定向过去,当然在这个重定向之前,浏览器自个儿要给域名下保存一个cookie,好,我们这个自个儿呢,来画在这儿好,所以呢,我们浏览器自己要存一个cookie,我们的第11步的前置步骤,它重定向之前,浏览器要保存一个cookie。
13:22
要给哪个域名下,注意我们现在是给s so server给这个域名下,因为我们这个登录请求是发给s so server8080的,所以呢,所有的命令,比如保存cookie都是命令我们这个s server这个域名的,所以呢我们cookie保存到了s so server这个域名下,所以我们现在这一步的流程就是浏览器要给SSO server.com域名下保存一个cookie,保存cookie的作用就是浏览器只要以后访问这个域名都会带上cookie。
14:00
好,我们就把这个作用呢,也顺便给它写到下边浏览器,只要以后访问。好,我们这个十一十二要做到两步,浏览器以后,访问浏览器以后,访问这个域名以后,访问这个域名都要带上这个域名下的所有cookie,这个域名下的所有cookie,好,所以呢,我们现在看到的效果就是我们现在登录成功不止跳回到你C1了,而且你跳回到C1给了你一个token,你自己判断成功了,而且我还给我自己下边留了一个token,就是s so token,这个cookie跟我给你的token是一模一样的,你C1登录成功了,你把登录成功的用户放到session中了,那接下来C2呢,接下来如果我们访问C2的这个请求,兰2.com,那们是8082,那现在要访问boss了。
15:02
好,我来回车,发现呢访问boss要去我们server的这一块,请求我们来重新访问一下,我们访问一下boss走来看整个流程,我们访问boss,由于boss呢判断自个没登录,所以呢它要重定向去我们的s so server来看我们的流程,那就在这好要访问boss boss呢还是跟我们C1一样判断是否登录,我们把这一块复制过来。好,我们把这一块的整个文本全部拿来判断的,整个登录逻辑都是一模一样的,Comp c,我们的C2也是那段判断逻辑拿过来13步,好,13步我们现在要判断有没有登录,那我们这个判断是否登录,我们主要看session里边有没有或者什么,那现在呢是没有登录,所以呢,我们又跳回到我们的登录页了,那接下来我们就命令浏览器,我们现在没有登录,我们命令浏览器重定向去来登录,那我们这一块呢,还是要加上的好,那现在CLIENT2判断自己的session里边确实什么都没有,然后呢,13步命令浏览器去登录。
16:10
命令浏览器去登录,所以呢,访问的这个请求我们能看到,我们访问可二的时候访问boss当然呢没登陆它命令浏览器来到这儿,所以呢浏览器就访问了我们这个地址,好我们把这一块的。流程我画在这,命令浏览器去登录,那就是这个地址,好,那接下来浏览器就乖乖的重定向到这,但是这个地址呢,是访问s so server,好,浏览器接下来要做的一件事情就是访问s so server,好,这是我们的浏览器,我们让他来访问我们的s so server,在下边把它往下拉,好现在呢,这是我们这个第14步。第14步,那么这个浏览器访问,浏览器访问s so server com,用命令浏览器去登录,是这个地址了,所以浏览器去访问我们指定的这个地址,这个没啥问题,好,就是这个地址,但是大家注意。
17:14
我们浏览器是访问你指定的地址了,但是呢,我们上一步系统一已经给登录了,登录了以后呢,给s so server还留了一个cookie来,所以呢,浏览器呢,下次再来访问登录页的时候,我们看到我们呢boss没有登录浏览器命令去访问登录页,我们第二个请求就是访问这个8080登录页,当我们访问这个登录页的时候,大家注意请求,请求呢带上了什么,带上了cookie,这个cookie呢,就是s so token来看一下我们这个cookie呢,因为我们给SSOSO里边之前放了一个这个token,所以我们呢,我们拿到这个token。好,我们在这儿来看一下,好,这是没问题的,所以呢,我们这个请求的时候,我们就会带上这个token,所以接下来我们这个登录页的处理就应该是这样子的,如果人家带了这个s so token,说明是上一个不知是哪个人的系统登录过了,留了一个痕迹,那我们接下来就告诉这个人,你不用登录了,你刚才这个浏览器呢,已经登录了,都留下这个痕迹了,所以呢,我们现在就来判断。
18:22
如果有这个cookie,那就说明我们就不用登录了,们拿到这个cookie的值用了spring m VC,很容易拿到我们这个cookie的值,S so talk,我们来想要获取cookie,我们只需要一个注解叫cookie value6。好,这个cookie value6呢,我们来获取谁?我来写一个VALUE6,因为我们呢,如果某一个人登录成功,会放一个cookie叫s so to,我们就来获取它,当然呢,这个是不一定有的,没人登录过,那就没有,所以我们def fort value6,或者我们写一个require是false,这个是不一定有的,所以我们接下来就做一个判断,If。那么这个呢,是获取cookie s so token这个cookie的值,如果能获取到if string you.is empty,如果它的这个东西不为空,好,这个东西不等于空,那这个说明说明之前有人有人登录过,留下了痕迹给浏览器呢?浏览器留下了痕迹。
19:26
所以说呢,我们接下来直接就给它跳回去,但是跳回去呢,那个人要免登录,我们所有跳回都是要加上我的URL地址和加上这个token的值,所以我们就呢给它跳回去,当然留下的这个token好,我们现在放在这,那跳回要用的值,那就是这个token的值,Token的值因为我们这个留过了,所以呢我给你跳回去,所以我们这一块呢,唯一一个核心处理就在这儿,我们给它返回这个登录页的时候,展示登录页的时候,就是要展示登录页的时候,就是判断这个人是否登陆过,是否登录过,判断是否登录过,就是判键是判断是否有关键cookie,有关键cookie,这个关键cookie呢,就叫s so talk,如果没有,那就展示登录页,如果没有就展示登录页,如果有,那我们就免登录,直接跳回地址,如果有,如果有就直接。
20:26
返回之前页面,好,所以我们现在来看我们这个登录服务器呢,做了一个关键判断,判断你是否登录过,所以呢,我们这一块来看,我们在这儿我们的CONNECT2浏览器访问这个登录请求的时候,服务器相当触发第五步判断,我们把第五步的详细信息放在这儿来服务器判断第15步判断呢,已经有之前的cookie了,判断因为你访问这个s so server,你就会带上之前的cookie,我们这个客户端一给你之前留了这个cookie,所以在这儿,所以呢,我们现在判断我们有cookie了,关键性就在这儿,之前留了cookie,还给它加粗,好,现在呢,判断带来了cookie,带来了cookie,那说明之前登陆了,说明之前登陆了。
21:15
那登录了我们是不是就不用登录了,那当然了,所以呢,接下来我们就直接让它返回我们这个页面,因为你之前从哪来的,还是返回出去,然后呢,返回之前页面,所以呢,因为你这个之前既然已经登录了,你就无需登录了,我直接给你跳回去,但跳回哪你的这个页面地址,你给我带来了,我知道那跳回你的页面地址,但为了让你知道,因为我们每一个客户端,我们跳回来以后呢,我们会加一个这个token,如果有这个参数就认为是跳回来的,这种好,我们来看一下。我们这个hello controller就像这样,只要呢,你能回来带上了这个token,那说明你是登录回来的,登录回来的我给你把登录信息放到我们这个session里边,所以呢,我们登录服务器要跳回去的时候,一定要给人家带上我们的这一块,把这个logn controlr拿来,一定带上我们这个token,而token的值是什么?那就是我们之前给这儿留下的痕迹,因为我们发给我们其他服务的这个token跟我们自己留下的这个token都是一模一样的,好,所以呢,我们这么一写,以后来重新来串一下逻辑,三个我们全部重新启动。
22:28
现在流程就是这样,我判断呢,带来了cookie,说明之前登录了返回之前的页面,所以呢,我们这个返回页面是这一块的逻辑,那么返回页面呢,你要返回这个请求。好,返回什么请求,那第16步,第16步,因为呢,我们这个判断成功了,我们看到这一块,好,我们判断成功了这一块,那就是我们在这一块,你想要访问这个登录页,我判断成功了,然后呢,回到你之前的地址外加token,好所以呢,来看一下我们的效果。
23:01
我们把之前其他的所有状态全部清空,解散成ID,我们把这个清空好,包括我们把登录服务器的这个cookie也清空。现在呢,全部都没有登录,那么这个登录服务器也没有任何cookie,好没问题,那么员工一也没登录,员工二好,我们一会来访问下,我们先来访问client一来访问CLIENT1回车,好,CLIENT1没登录,要我们登录,那就来登录,那只要一登录,我们除了跳回C1,还会给我们server s so com这个留下痕迹,所以我点一个登录,好,登录跳回到我们这个员工页面,那就是我们之前的这一步,我们只要这个账号密码输完成功,登录跳回来,跳回来我们做了两件事儿,第一件事儿就是跳回你的这个页面,第二件事儿是留一个痕迹,所以浏览器在这儿留下了一个关键痕迹。我们就能看到整个请求的过程,我们do log只要一成功两件事,一件事是跳回之前的页面,好带上这个,第二个呢是留下痕迹,但留下的痕迹跟我带的这个token是一模一样的,好,所以呢,接下来我们SSO。
24:08
这个server就有这个痕迹了,好,接下来我们二想要登录,来看一下我们的流程,走我来回车,诶我们发现C2呢,直接就能访问,那为什么呢?我们就来看一下整个流程,来访问可兰二的bos请求,好,访问可兰二的boss请求,来我们可兰二肯定自己要判断登录没登录,我们没有session,那肯定没有登录,那没有登录呢,我们就重定向去来登录,好,那接下来,所以我们看到的这个请求地址是我们访问boss,我们判断没登录命令,我们这个浏览器重定向去登录,当然还要放一个解session ID,这是他自己的cookie session机制我们不管,但我们现在要你去我们的这个server去来登录,所以接下来浏览器就去访问server的log页面,浏览器乖乖要访问server log页面的时候,结果server log页面呢?我们的这个判断逻辑就是你只要带了这个cookie,因为我们之前有人登录,留下了这个痕迹在这儿。所以我们这个。
25:09
客户端二想要去访问s so sor,那么这个浏览器呢,就会带上你之前这个浏览器留下的痕迹,所以我们看请求这一块会带来一个s so token,就是这个我一判断一带以后,那么就把你带的这个token拿着,让你呢重新回到你自己的页面,好,所以呢,我们现在又重新回到自己的页面,那又重新回到自己的页面。我们走到这一步,好,现在重新回到自己的页面,那就是这个页面,我们把这个呢拿过来,我们看一下它的这个重定向,重定向请求我访问login页面,但是呢,命令我们重定向到这儿,就是访问我们自己的页面,那就是这个CTRLC,我来复制过来,好第15步,那这个16步登录成功了,登录成功了以后呢,我们这个命令浏览器重新向到自己的页面,命令浏览器,浏览器重定向回自己的页面。
26:10
回自己的页面,那自己的页面呢,那就在这儿好,所以呢,浏览器现在就要访问自己的页面,来,我们来访问一下,我们来访问自己的页面,就是C2这个页面,那第17步就是访问我指定的这个地址,17步访问来访问我们指定的这个地址,因为我们命令浏览器重电向到这,浏览器就得乖乖的访问这。好,那访问这以后呢,那接下来那就得触发判断了,我们无论是访问哪个受保的资源,那判断逻辑都跟第二步是一模一样的,判断是否登录,我们现在虽然没登录,但是带了token,只要我们这个带了token,带了token以后呢,我们就把token的这个信息拿来,然后呢,我们放到session中,所以以后呢,我们只要是这个系统session里边就有登录的用户了,好。
27:00
所以呢,第17步我们访问这个页面,然后呢,触发第18步,相当于还是触发第二步的逻辑。触发第二步的逻辑,触发第二步的逻辑。第二步的逻辑,那就是给创建自己的session,创建自己的session,保存当前登录状态,保存当前登录状态。所以呢,我们只要一保存了,那以后我们这个第二个系统访问,我们就可以免登录了,因为在自己的session里边都有了,那保存完登录状态,我们就给它响应页面,这是我们的第18步响应页面。而且呢,以后再来访问,如果我们这个无论是CLIENT1还是二,我们以后再来访问,自己的session都已经有了,所以呢,以后无论哪个系统访问。
28:03
19步以后无论哪个系统访问自己的session里边都已经有了这个数据,同步了我们这个cookie的数据,自己的session里边都保存了我们这个令牌token对应的这个用户信息,Token对应的用户信息,所以呢我们就不用去登录了,就不用去登录了,所以这就实现了我们一处登录,处处登录,这个登录呢,关键就是来做了一步,就是我们一定要在登录服务器,那既然登录服务器呢,是一个单点服务器,那给这个服务器呢留下一个痕迹,其他系统想要登录这个服务器,看你这个浏览器呢,之前留过痕迹,你就跳回去,但跳回去呢,其他服务器为了知道我们哪个人是怎么登录的,我们一定要在URL地址上带上我们这个关键信息,所以呢,核心就两点,第一点就是给登录服务器留下痕迹。第二点。
29:03
那就是我们要去其他服务器,第一个给登录服务器,登录服务器。好,我们把这个放大给登录服迹,留下登录痕迹,留下登录痕迹接下来第二个。第二个呢,那就是。登录服务器要将我们这个token信息,Token信息重定向的时候,重定向的时候,重定向的时候带到UI的地址上,然后呢,再来关键的一步就是我们的这些其他系统,其他系统就要处理UR的地址上的这些关键信息,其他系统要处理UI地址上的关键token,只要有,只要有那就应该将token对应的用户,将token对应的用户,对应的用户保存到自己的session中,自己的session中相当于关键的就是我们第三步的关键步骤,就是自己系统要创建自己的会话,自己系统将用户保存在自己的绘画里边就行了,将用户保存在自己的绘画中。
30:21
那以后只要我们来访问,只要我们来访问我们这些系统,因为我们会画呢,已经有了我们有登录的用户了,所以我们就无需登录了,没登录的系统去来访问登录服务器的时候,已经登录过了,又会重新重定向回来,所以呢,这一块的代码都是一样的,所有的这一块的判断逻辑都是一样的,那这个呢,大家就可以抽取出来,抽取成一个filter,放在任何系统里边,所有请求过来,先判断你有没有这个关键脱Ken有了,把当前用户的信息放到我们session里边,没有那就算了,然后再接下来更关键的就是我们要查这个用户信息,我们现在呢是一个模拟假的全放张三,而真正的是应该去s so server来获取我们这个用户信息,就说s so server专门得开放一个请求,开放一个什么请求呢?我们就叫user info,好,Public,假设我们就叫string,那就叫user info,当然应该返回对象。然后呢,我们能。
31:22
按照你指定的去查,我现在既然拿到了这个token在这儿,然后呢,我们就去来。登录服务器去来查一下这个token真正对应的用户信息,所以这个token呢,去来查就行了,At一个request,好,你给我给一个token,然后呢,这是一个get请求,我给你返回用户信息,怎么返回,直接从red里边我给你查就行了,Option for value,点一个get,拿这个来查,查到一个string。好,我们来查到这个东西,我们就直接来返回returns,所以呢,我们这一块真正要去远程来查询,当然远程查询呢,我们不应该拿份去来调用,为什么呢?因为我们可能这个登录服务器都是拿PHP写的,不是拿Java写的,PHP怎么引入open phone啊,怎么做这些东西啊,所以我们应该是用HTP工具类,比如我们HTTPU,我们之前抽取过一个,如果我们导入了这个common以类,好,我们现在给这个客户端,随便哪个客户端来导一个comments依赖,那我们导了这个coms依赖以后呢,我们就会有HPU工具类,我就应该拿它去查,或者我们拿。
32:32
家提供的有一个叫risk,它也能发请求,我就不等内了啊,Rest time,等你有一个rest,他呢直接帮我们来发请求就行了,他发什么请求,发一个get请求,点一个get,因为这个get请求的URL地址是什么,我们来可以指定上,我们要给登录服务器发请求,所以我们现在给登录服务器,登录服务器呢,有一个请求叫user info来看一下,有一个叫user info,在这确认一下。
33:07
登录服务器有一个user info请求,然后呢会返回这个字符串的内容,把这个内容呢response响应出去,好,那get map要处理的就是这个user info,好,所以呢,我们现在就应该做的就是来发送这个user info请求,我们把这一块拿过来,我们要发的请求的UR的地址是这个,并且呢,我们一定要带上这个token token的值,那就是我们跳回来以后拿到的这个token,那先要把这个用户的真正信息查出来,然后呢,由于返回的是一个string,所以我们直接使用STRING1封装string.class就行了,点一个class,我们将返回值的类型封装成一个string,好,然后呢,我们最终得到了我们这个string。那么这是get for entity,那么得到了一个响应,这个响应里边有状态码,有各种信息,那现在不要这些响应状态码,那现在就要响应的内容,现在内容那就是我们真正的值,好,我们这个值才是我们session里边真正的用户,而且呢,这个用户我们应该在我们的页面来进行展示,我们来看一下我们的页面,我们只要访问受保护的资源,我们页session里边呢,已经有信息了,我们就可以在页面欢迎,到底是谁?双中括号Dollar福大括号,那从session里边取出login user就行了,第一个放了一个叫Logan user。
34:32
好,我们把这一块的直接全部复制到无论是C1系统还是C2系统都应该这么来做,好,我们在这来这样做,包括CLIENT1系统,它的这个hello controller也应该是这样的,发请求好后,把发请求的这段代码复制过来,除了在C1里边有,C2里边的所有代码都应该是这样,所以大家发现全是这个逻辑,那就应该抽取一个filter。好,我把这一块的逻辑复制过来,那么在session里边放的就应该是这个信息,好,我们现在来重启一下,全部重新来演示一下,那么先来清空我们浏览器以前的所有状态记录信息,好,我们包括这一块的session信息,并且全部删除掉,好,那就每一个人呢,现在都没登录,包括我们的自己的session全部清掉,好,现在我们重新来访问,我们访问employees,访问系统一走。
35:27
我们系统一呢没登录,我们去重定向到我们的登录服务器进行登录,登录服务器呢,现在还没启动成功,我来稍等一会儿,我们现在来监控我们的整个请求,我们现在访问C1,好拿过来访问一回车,我来监控整个请求,看一下我们的整个流程,梳理一下走。我们确实是访问client client1的employee没登录,重定向到我们登录服务器,好,我来填写账号密码,所以下一次请求呢,就是登录服务器,我看到了这个页面,我来点击登录,走,登录成功又重定向回来,回到我们的这个client client1回来以后呢,有关键的两步,第一步就是我们给登录服务器存了一个cookie,就是这个token,然后呢,第二步重叠下回到自己的这自己呢也会在session里边创建会话,可一以后访问都OK了,然后接下来二,而且呢,我们这个到底是哪个用户信息,我们刚才登录的是叫DA,所以这块就是dad,然后呢,我们来访问C2,来访问C2的时候来监控整个network请求,由于我们C2没登录,我把这一块呢先来删掉,所以呢,我们的DA一个请求回车,诶,我发现不用登录直接能欢迎DADA,那么在这呢,就是这样访问C2没登录,先去我们的登录页,但浏览器要。
36:47
到重击箱到登录页的时候,又会带上我们的这个token,哎,So cookn就是这个token,那么这个呢,是在之前系统一留下的这个痕迹,好带上以后呢,你发现你带了这个,你又重定向回去,把你这个token交给你,你然后根据这个token,二根据这个token再创建自己的绘画,这也类似于我们的社交登录一样,我们去微博登录成功,微博给我们给了一个令牌,我们用这个令牌去来换取真正的用户信息放到我们session里边,所以这就是我们的单点登录,那整个流程就是这一块,那它的其他细节我们下一刻继续来说。
我来说两句