00:00
那接下来呢,我们来看这个第三种方式,拓N模式,Ton模式呢,大家看啊,我们可以把这个地方看作一个浏览器啊,就是客户端,然后呢,这面看做我们不同的微服务。就外部服务器,比如说这是oss对吧,这是SMS,这是靠啊,这都是外部服务器,然后这面呢,它会有一个授权服务器啊,然后接下来呢,这面呢,会有一个数据库,大家看和前面呢,它其实是少了一个用户信息缓存,那言外之意呢,就是偷N模式的话呢,这个用户信息缓存呢,就不需要了,那用户信息缓存不需要了的话呢,我们的用户信息存在,那我们来看,好大家看在这个地方呢,比前面多的就是token了,所以说呢,我们可以理解为用户信息呢,是存在token里的啊,然后呢,我们首先第一个步骤,用户呢,想要访问微服务A,比如说访问前面这个微服务啊,我管它叫微服务A,好,用户想要访问微服务A,微服务A呢,发现需要登录,这个时候呢,他就给浏览器返回,所以就需要登录,然后浏览器呢,就跳转到授权服务器,授权服务器这块呢,当然这个就是到底是由他给你返回到浏览器,浏览器跳转还是由他直接访问授权服务器这个不同的框架啊,它有不同的时间。
01:14
方案明白吧,我就说最基本的一个典型实现啊,好,然后接下来呢,我们呢,就浏览器端呢,就显示了一个登录页,对吧?好,显示登录页之后呢,我们就输入用户名和密码,输入用户名密码之后呢,我们上授权服务器,上授权服务器呢,检查数据库,检查数据户用户名密码一看对好对了对了,就给我们生成一个token,这个token呢叫访问令牌。叫访问令牌啊,就像古代你如果要是去访问别的城池的话,你如果有令牌的话,你出示,然后你就可以进去了,是吧,没有令牌可能就有问题啊,不让你进哈,好,然后接下来呢,这块呢,就是拿着这个访问令牌,我再去访问微服务A,然后微服务A一看啊,你是携带令牌来的,然后呢,他就会对令牌进行校验,一校验令牌通过,那么你就可以访问他了,一校验令牌失败,那么你就访问不了它,明白吧,要么你就拿了一个假令牌,要么呢你就这个令牌过期了,要么呢你就没有带令牌啊,总之无论什么情况,反正呢,我就不让你这个访问了,这个呢就是一个通过令牌来校验,然后同样我们去访问V服务B的时候也是一样,我携带着令牌去访问好,微服B呢也会对这个令牌进行校验,微服务C也是一样的,所以大家可以看到这个里面和上面这个地方最大的不同就是这面的用户信息是存储在服务器当中的,是由认证中心。
02:41
先上服务器中去获取用户信息,然后拿回来,然后看有没有对不对,对吧,然后如果有对,那么就给客户端返回一个结果,好,现在这面呢,它是没有服务器存储用户信息的,而是由客户端自己保留令牌,也就是说这个令牌呢,是由客户端保存的,然后用客户端每一次访问服务器的时候呢,你得自己拿着令牌去。
03:03
是这个意思。是这个意思,所以这个如果说这个就比如说像你去坐地铁,你必须得拿着地铁卡去,对吧,你不能说我卡在你这儿呢,你看看有没有钱,有钱呢我就进去了,不是这样的是吧?是你得自己携带着卡。携带着地铁卡,或者是携带着公交卡,然后呢,你去,然后你去呢,你到不同的地铁站,然后不同的地铁站呢,它有相同的校验这个令牌的方式,他一校验对吧,你扫码通过了,那么你就进去了,如果不通过你就进不去啊,所以说这个是客户端携带令牌啊,客户端携带令牌。所以呢,这个是这样的一个模式啊好,然后呢,这块就是我们所说的token了,它的优点呢,就是无状态,然后呢,什么叫无状态,就是服务器端不记住你。啊,什么叫有状态,有状态就是服务器端会记住啊,然后呢,基于标准化,什么叫标准化,我们要学的呢,是一个叫做Jason web token的。
04:10
这样的话呢,我们就有一个统一的令牌生成方式,有一个统一的令牌解决方案。这样的话方便我们程序员进行一个开发啊,好,然后它的缺点呢,也很明显,就占用带宽,你看每一次我访问服务器的时候,我都要携带着令牌去,而且这个令牌还挺长啊好,都要携带着这个令牌。为啥挺长,因为这里面有你的身份信息啊,有你的身份信息,所以呢,它里面的内容还挺多,然后呢,你像这个我客户端访问服务器的时候,我就没有必要去携带令牌,因为我的这个用户信息是存在服务器端的,对吧,我客户端是不存用户信息的,好然后那这种客户端和服务器端通过什么来,这个通过什么来,就是这个啊。呃,对话呀,通过你可以存一个cookie啊,把一个类似于session ID的东西存到cookie里啊,然后和服务器端对话,那这块详细的我就不讲了,后面你们电商项目当中会有类似的实现啊,然后那所以这块呢,咱们来讲这款这块呢,就是它的缺点呢,第一就刚才咱们说的占用带宽,每次都得携带的托盘,第二呢,就无法在服务器端销毁,什么意思,就是比如说我服务器想把你踢出去,踢不掉你。
05:26
啊,踢不掉你,为什么,因为你的令牌呢,是在你的本地存着呢,你的本地每一次呢,都得拿令牌过来,然后服务器你只要拿令牌过来,我服务器就得校验啊不像这个这个呢,我服务器直接可以把用户就踢出去了,为什么?因为你的用户信息存在我缓存当中,只要我把缓存当中和你的用户信息相关的的信息全删掉,对吧,那你下一次你就登录不进来了,所以可以在服务器端销毁的,这个是没有办法在服务器端销毁的,所以呢,这种ton的方式呢,也是一种广泛采用的方式,但是他自己呢,本身也有一些缺点啊,所以呢,有一些这个场景下呢,还会使用这个SSO的模式,那所以在咱们这项目当中呢,咱们就先接触这个token模式,后面的项目当中呢,大家会接触其他的模式。
06:14
这块呢,是我们所说的单点登录当中的to模式。
我来说两句