00:00
微信扫码登录这种登录方式我觉得各位同学应该都用过,因为我们现在很多地方登录基本上都是什么扫码,或者说扫码支付,扫码登录这种方式应该是最常见,因为扫码有一种最好的方式是什么的,它可以节省很多的操作。因为各位应该都明确这种思路啊,就是我们这个人嘛,有一种变化规律,人嘛都会越来越怎么样。我觉得各位应该都知道,人是不是越来越懒哟。这个啊,不是,你是不是有体会啊,怎么懒呢?比如说我们现在啊,我们去操作某个系统,某个软件的手,咱们希望怎么样,是不是咱们用最少的输入,最少的操作,然后他能看到是不是更多的功能呢?这是我们一种大的方向,人嘛,肯定越来越懒,比如说未来的发展可能有什么,人工智能可能更智能,假如说你一想它可能会出现什么,你的界面也都可能会实现,所以咱们微信这种扫码方式登录,就无形中减少了很多用户操作,那能减少什么呢?
01:02
所以各位应该能想到,比如说你看啊,我们在昨天包括刚才的方式是用原始方式做登录注册,那这过程中咱是不是还需要注册,然后是不是还需要登录,而你注册的时候还需要输入很多信息,登录的时候是不是也需要输入很多信息,就是你需要先注册才能登录,这过程虽然功能实现,但是他需要用户是不是做很多操作呀,虽然很多用户啊,他不喜欢做很多操作,他想一次性一登录也能注册,也能登录,所以咱微信就做这效果,那怎么做到呢?微信登录咱们肯定有一个扫描的,是不是一个二维码啊。当我们一扫二维码可以做什么功能?第一个。把你这个扫码人的信息可以给你自动注册加到数据库中,然后可以给我们自动登录到你的页面中,所以咱们现在讲的是微信扫码登录这种登录方式,在目前的项目中,这种方式应该是很常见的,因为它可以减少用户的很多操作,让你用户操作更加简单,更加便捷啊,所以咱们来说这个微信登录也是目前呢,很多互联网项目中一个标配性的这么一种方式。
02:13
微信登录,那咱们看啊,这个该怎么去做啊。首先呢,咱们讲微信扫码登录之前,给大家先讲一个理论知识,就是一种原理,或者说一个概念,这个东西叫o two啊,咱先说它,这说完之后再来说这个微信登录该怎么去做。其实微信登录呢,咱是用这个腾讯公司提供这种方式做操作,所以咱要按照腾讯它规定的步骤把这做到,也就是说啊,微信的登录是一个固定流程,因为是腾讯的东西嘛,你用别人东西,那别人让你怎么做就需要怎么去做啊,就是咱会讲这过程怎么来实现。咱们第一个啊,先来讲这个理论上一个知识叫o to啊,那给大家先做个说明,然后咱最后再说这个登录怎么去做啊。
03:01
那我们看第一个啊,关于这个叫奥斯。给大家啊,我来写一下啊,这是一个理论上的一个知识。那这个东西呢,首先给大家说一下also to啊,它到底是个什么东西,这个我先做个介绍。这各位啊,强调一下啊,我这里写到,但是这个词。Ath就是O什么意思?是不是有那个权限,或者说用户那个意思,Also,包括also有权限的意思啊,所以它做的主要是一个权限的相关一个东西,那它到底是个什么东西呢?我在里边写一下啊,希望各位记住啊,就这个奥to它是什么?它是针对一些特定问题的一种叫做解决方案,这个叫奥to,这句话说的很官方,一会大家会说明它具体解决什么问题,也就是说啊,这个奥to是一种解决方案,它能解决一些特定的问题,这个叫奥to啊,这是它的一个完整一段描述。
04:04
那它具体是解决什么问题,包括他是怎么解决的,下面给大家来具体说明,我在里边写一下啊,就是第二句话。斜对位置就是o to,它主要可以解决有这么两个问题。注意我的描述啊,他不是说只能解决两个问题,是主要有两个问题,当然还有其他问题是这两个比较典型,那说一下有哪问题,包括to怎么解决的,我在里边列出来啊,首先里边它可以解决的第一个问题就叫做。分布式系统间的访问,呃,那我们先说这个啊,它叫开放系统间的授权,先说这个问题啊,开放系统间的授权还有一个问题,叫做分布式的访问问题。主要有这么两问题,用凹two这种方式可以解决啊,那我下面给大家就来说这两问题啊,到底是什么,包括auto to是怎么解决的啊,咱们来一个来分析啊,各位把这知道啊,因为这个在面试中别人可能会问到你啊,说你知道auto to吗?咱们肯定要知道,包括他是干什么的,你要知道他来解决问题包括什么,问题是什么,怎么解决的啊,咱们来看啊,首先我们看它解决的第一个问题就叫做开放。
05:24
系统间的一个授权问题,那这问题啊到底是什么?下面给大家我来详细说一下,先看一下我的文档中就第一个啊。叫开放系统间的授权,这张图呢,是他一张官方的图,里边就说明了他这个过程,咱用他为例啊,包括你看这个人啊,就是他提出这个这种凹to的这个人就是他提出的啊,然后里边什么意思呢?这里写的啊,有这么一个原理,他叫相片的拥有者,有一个叫云冲印,还有一个叫云存储,也就是说呢,通过这个云冲印,想去打印你云层种猪这个照片,这个过程做到这个授权。
06:06
那它具体什么意思给各位啊,我来画个图,再来说明一下。就是它一个具体原理啊,第一个问题。给大家画到这个位置啊。我就直接这么画了啊,比如说现在我们有这么几个地方啊,假如现在呢,我们这个位置有个人,比如这个人啊,就是这个Lucy。啊,就Lucy这个人,比如说现在啊Lucy呢,他自己照了很多这个照片,就自己那个什么写真照片啊,照了很多的照片,然后他照完照片之后呢,因为大家知道我们目前啊,咱们做存储,很多人习惯是不是用一些网络存储,比如说什么百度云盘,什么什么云盘在里边,咱是不喜欢做存储,而很多人可能不喜欢再去电脑中,或者不希望再去买个硬盘,他都喜欢在网络上做存储,所以现在比如说这个Lucy呢,他就把自己那个照片存储到了这个。
07:00
就是百度网盘上,或者说百度硬盘上。百度。网盘上,在百度网盘上呢,存储了他自己那个照片。啊,就是存储了他照那个照片这一个过程啊,再比如现在啊,在咱们网络上有这么一个服务,或者说有这么一个应用,这应用干什么呢?它可以去做一个叫打印服,就是打印照片。啊,打印照片,也就是说这个打印,比如现在我这Lucy呢,他想做件事情,想把自己存到百度网盘上的照片交给这个服务去打印,想做这个过程,那大家注意啊,目前就有一个问题了,什么问题呢?就这个百度云盘是不是Lucy的,Lucy是不是肯定他能去操作百度云盘,这肯定没有错,就是Lucy嘛,因为他自己申请百度云盘,他根据用户密码肯定他是可以去操作百度云盘的,像里边比如说传照片,下载照片,包括删除照片都是可以的。
08:00
但你注意啊,这里边在网络上比如有个服务叫打印服务,那大家考虑,你说这个打印服务能去访问Lucy的百度云盘吗?他能去访问吗?是不是肯定是不能的,因为这是Lucy嘛,只有Lucy自己能访问,如果你虽然一个服务登去访别网百度云盘,那这里边肯定有问题,所以你注意啊,在默认情况下,这打印符肯定是不能去访问Lucy的百度云盘的,它不能进行操作。小位置啊,它是不能操作的。这个各位要明确啊,比如说你现在只有一个百度云盘,那别人肯定访问到,只有你自己才能访问到啊,它是这个过程,那这个时候有问题了,假如现在Lucy呢,他就想让这个打印照片这个服务去打印自己的百度云盘的照片,默认肯定做不到,那Lucy需要怎么做才能做到,他就要做件事情。做什么事情呢?Lucy就需要给这个打印照片这个服务做一个叫授权操作,就给他授权下。
09:05
这里面有个词叫授权。什么叫授权呢?就是给他去访问自己百度云盘的权限,然后他就才能访问到,所以这个过程就是auto解决问题,他就解决这个该怎么去授权,用什么方式授权让打印照片这个服务。去访问到他的百度云盘,这个过程就叫开放镜间的授权啊,我再说一遍啊,这个流程啊,比如现在Lucy呢,他自己照了很多的照片,他把照片存到了自己的百度云盘上,因为是他自己的嘛,他肯定可以操作,可以上传,可以下载,可以删除,但是比如现在在咱的网络上有这么一个服务的应用的一个服务,它叫打印照片,Lucy现在想让打印照片类服务去打印他自己百度云盘上的照片,默认打印照片服务肯定不能操作他的百度云盘,因为他没有权限,而Lucy需要做件事情才能操作,做什么事情给打印照片,这服务做个叫授权操作,当他一授权就能访问或者就能操作,而这授权过程auto two就是解决这个授权问题的。
10:17
这是他的第一种,就是解决第一个问题,叫开放基组件授权,就是给这个打印照片做授权,他去让他访问百度云盘,怎么授权photo to做的事情啊,这是他的第一个解决问题,叫开放经营件授权,而这张图上画的就是我设计过程啊,用这个授权。这个各位知道啊,它可以解决什么问题,就是一个授权问题,授权打印照片,让他能访问百度云盘。那他该怎么授权,咱看一下啊,看一下我课件中就是授权呢,有多种方案,我在这里边给大家列了三种比较常见的方式啊,咱们看一下啊,其实重点是第三种,第三种是auto to的方案,当然还有其他一种方式。
11:01
那大家可以想一下,比如说现在Lucy怎么授权给打印照片,他就能访问百度云盘怎么授权。我觉得各位应该知道有一种方式啊,你说Lucy怎么访问百度硬盘?他是不是有用户名和密码呀,但是我现在Lucy把他的云盘的用户密码给打印照片服务是不是就能访问,这是第一种方式,他直接拿到用密码可以操作,但是这种方式咱一般肯定不这么用,因为这种方式最大的缺点是什么?安全性是不是太低了,你把优雅给别人,那别人泄露的话,你是不是就造成了信息的泄露,比如你拍了很多的自己的照片,被别人就泄露了,这肯定是最不安全的方式,对,这个虽然是一种方式,但是一般不用,只合自己来使用合适啊,这是一种方案,然后除了它之外,里边还有第二种方案。来看第二种方案啊,这叫什么?叫做通用的开发者P,那这是什么意思呢?也就是说啊,这个有一个词,这个词叫万能钥匙,也就说我现在啊在这个。
12:05
Lucy,包括档案照片和百度云盘,这过程中他们比如说这个档案照片服务跟百度云盘,它两个服务商量好了,开发出这么一个叫通用的这么一个key,或者是开发一个钥匙,用这把钥匙能打开百度云盘,也能打开打印照片,它可以互相访问,这叫万能钥匙,就叫通用开发者P,这是第二种方式,就是两人约定好了用这个东西两个都能打开。但是这种方式啊,在实际中它有一个局限性,什么局限性呢?大家看这描述,它适用于什么。叫合作商或者说授权。不同的医务部门之间。然后给大家举个例子啊,咱就能说明这个问题。比如说啊,就是各位同学,比如某个同学啊,他现在比较有这种就是雄心壮志,他某一天啊,自己创业了,看这个公司,这公司比如说刚成立嘛,一般刚成立公司可能没什么实力,可能公司就一两个人,可能比如说你的公司就三个人,一个你,一个你夫人,然后一个你丈母娘就三个人,然后这个时候比如说你觉得百度这个公司挺好,你去找百度,想跟百度做合作。
13:15
但你大家可以想到,就是你现在有三人的公司,你找百度合作,你说百度会跟你合作吗?是不是肯定不会,因为你跟他不对等,你们实力差的太多,他不会跟你这个合作,当然换过来,假如现在阿里巴巴去找百度合作,你说百度会合作,是不是一般都会,你两人是对等公司,他们有同样的实力,有共同的利益,而你找百度,他会跟你合作,所以这个就是第二种方式的缺点,你要跟他做一个通用key,他不会跟你合作,因为你们之间不是合作商,你们之间的关系不对等啊,所以这种方式他有一个局限性,就我举个例子,你是用于合作商,或者说你这是相关的业务部门可以做到,但如果说你是一个刚成立公司,找百度,他不会跟你合作啊,因为你们不对等。
14:03
所以这种方式有局限性,所以后来呢,就出现了第三种方式,这个叫什么呢。它叫做办法令牌,其实是在第二种基础之上做了这么一个进一步的完善,那怎么完善,给大家说一下啊。比如现在啊,因为这个百度嘛,比如百度网盘肯定是一个比较规模比较大的一个平台,那百度网盘他也想到了会有这种需求,所以他怎么做呢?在过程中呢,它就开发了一个叫,可以说叫做令牌,令牌列为就是一串字符串,那比如说现在某个服务想去访问百度云牌,那怎么做呢?百度给他就颁发一个令牌,让他拿着令牌进行访问,但是他颁发就有限制,他要指定给谁可以颁发,包括颁发令牌要做个管理,比如这令牌带一天有效,或者说在一个月有效,就通过百度给别的访问者颁发令牌,这就叫办法令牌机制。
15:01
就是这个啊,而令牌里边就是它里边可以包含,比如你仿的一些数据包,仿的一些各种方式就可以做到,当然令牌它可以吊销,可以给他就是管理等等啊,这叫第三种方式,然后to就这个事情。也就是说怎么做呢?说到通俗点,就是他按照自己特定的规则生成这么一个字符串,然后把字符串颁发给访问者,访问者拿着这个颁发的字符串就可以访问百度云盘,这就叫o to啊,它里边就这么来解决的。所以大家听我的描述,不是各位是不是有一种感觉啊,咱刚才我说这过程是不是就是我们之前说那个token那个过程,Token是不是一字串,Also to就是给我们生成一个组串啊,所以这是第一种解决方案。姐姐在第一个啊,就是开放信统间授权,咱说了几种方案,第三种方案o two,就是按照它特定的规则生成一个字符串,然后把字符串颁发给访问者,包括可以设置字符串的有效时间,包括给字符串可以吊销,然后这个访问者拿着它生成字符串去进行访问啊,这个就是auto two的一种方式。
16:15
所以咱们啊,说了第一个问题叫开放信件授权。大家把这个了解一下啊,以后别人问到你能给他至少说出来。这个啊,我们做一个说明,然后除了这个问题之外呢,Also to还能解决第二个问题,这个问题呢,咱在之前曾经是说过的。其实这个问题是什么呢?就是咱之前说那个单点登录啊,或者说叫分布式访问啊,指的就是单点登录,那给大家啊,我再来画一下啊,第一个问题咱们做了一个介绍,叫开放系统间授权,然后咱们看第二个问题。第二问题,它叫做分布式访问,或者说就是单点登录。啊,分布式访问,或者咱说那个。单点登录。
17:01
这个问题啊,那这个问题u to怎么解决的,给大家来说一下啊,比如说还是咱之前说那个过程啊,然后我现在有一个项目是咱这个在线教育这么一个项目。啊,这是我们一个。在线教育项目,而在在线教育项目中,比如我们现在有很多的这个模块啊,假如我现在我就画这么三个模块。比如说我们的第一个模块是这个service e模块,第二个模块如是这个vod模块,第三个模块,比如是那个什么msm模块,就短信模块这些里边多个模块。这个啊是咱们这种方式,而咱的模块,因为咱们项目用的是微服务架构,所以咱用分布式部署,把每模块部署到一个独立的服务器上,但是过程中有问题,假如现在我这过程中啊,比如我现在在edu中我们进行了登录。然后登录之后呢,我想实现在EU登录之后,你在vod和msm不需要二次登录都可以访问,或者说我在vod登录,在这两里边也可以直接访问,我在这里边登录另外两个也可以访问,所以咱要做出一种叫单点登录,或者说叫分布式访问啊,这是我们要做的事情,那这个事情呢,咱之前说了三种方案,这是咱当时说的第三种方式,就是to的方式。
18:26
那第三种怎么做的?我说各位是不是有印象啊,我在里边快速写一下咱的做法就是啊。首先,第一步。当我登录成功之后,咱们就是按照一定的规则生成是不是一个字符串,在这个字符串里边可以包含咱的用户信息,比如说你的用户名,什么用户昵称等等,在里边可以包含,这是第一个啊,然后这个做完之后,咱第二部分咱可以把这个就是生成的字符串啊,给它通过我们的路径进行传递,或者说放到我们的cookie中都可以啊,就都能实现。
19:07
Cookie里边啊,因为咱们刚才写的前端,我们就是放到cookie中,或者你通过路径传递都可以做到,这是第二步,然后第三步操作就是咱们啊,我们后面。带去发送请求的时候啊,发送请求时候,每次我们都是带着这个就是token值或这个字符串进行发送。然后发送之后呢,咱们做法就是当我们获取到你这个字符串,然后从这字符串中,如果说能够获取到用户信息,它就是登录,如果获取不到,它就不是登录,这个就是我们之前说的这个token这种方式啊,所以现在also to做的就就是这种方案,他做的描述是什么呢?就是按照一定规则生成的字符串。角这个位置啊o two。他给我们的这种解决方案。
20:03
啊o two它的解决方案就是要求我们啊,按照一定规则生成一个字符串,然后你的字符串里边可以包含你的那个用户信息,啊,这就是凹的方案,用这个字符串的方式做到,而这种方式在里边有个术语,它叫这个术语啊叫一个叫令牌即制。就是生成字母串,这是o to啊,所以大家知道啊,咱之前是说过的,但是这里边说这么一种思路啊。就是auto two呢,它只叫解决方案,他让我们生成字符串,按照一定规则,但是什么规则它没有约定,你可以自己约定规则,它只告诉我们生成字符串,具体怎么生成由你自己去制定。这个叫解决方案,没有制定细节,只定一个大方向,而咱们就是在昨天我们中字符串,咱用的是不是叫GWTGWT是一种具体规则,但是奥two只叫解决方案,它没规定到细节的东西。
21:07
这是我们说这一点啊,包括说这解决方案,可能有同学还不理解什么叫解决方案啊,这是中国人比较喜欢用的词,给大家举个例子啊。比如说我现在啊,我想去美国啊,就举个例子啊,比如现在我想去美国,假如去美国呢,比如说现在我在国内,就是比如在国内我犯了事情,我想去美国去躲一躲,注意这是不是叫解决方案,去美国躲事情叫解决方案,但是我怎么去美国,我是坐飞机去,还是坐火车去,还是游泳去,是不是在里边没有说到这个就是你具体怎么去钓具的细节,而我去美国这个叫解决方案啊,这个奥to就是解决方案只是规定咱们可以生成字符串,但是这字符串怎么生成,里边没有说,咱需要用自己的方式,比如说你用GWT或者自己写方式把这做到。这个就叫auto to啊,所以咱们说了这么一个东西啊,比如这句话,Auto to是针对特定问题的,叫解决方案,具体怎么做他没有说,只是说了一个大体方向,比如说咱们刚才举的例子,它是生成了字符串,但是字符串按照什么规则生成,他没有说,他只是让你生成字符串,你只要生字符串就可以,而具体怎么生成,咱可以用其他方式,比如说用GWT,或者说你自己定个规则来做到。
22:27
啊,这是关于它的这么一个说明,这叫o to啊,这在很多地方都会用到这种思路,就是生成串,或者说令牌,或者说token,指的都是一个意思。所以这个啊,原理来做个说明啊,比较抽象一点,当然各位啊,把这给他要知道啊,因为有的时候在面试中别人也会问到类似的问题。这个啊,我们做这个说明,然后说完之后啊,咱看一下我的课件中啊,这些都是我刚才讲到的啊,咱都说过了,包括咱就看有一个地方啊,就有几个地方,各位注意一下啊,咱找那个核心的啊。
23:03
就是在。找到啊。呃,这个地方我们看一下啊,就这里边do to有几个误解,希望各位知道啊,其他的啊,了解一下啊,然后什么意思呢,咱看里边几句话,第一句话。各位注意啊,咱之前都知道一个东西叫HTTPHTP,是不是一种访问协议,但你注意啊,O two它不是一种协议,只是一种解决方案啊,这是第一个,你记住啊,它不是协议,它不像在P是一种协议,它不是协议,然后第二个各位知道奥凸凸里边它并没有定义你授权的处理机制,也就是说它只是一种解决方案,里边你局怎么做,它没有定义,没有定义机制,没有定义格式啊,也没有定义什么加密方式,并不是一个协议,它只是一种叫解决方案,就仅是一个框架,仅用于授权代理。就咱们说的这点啊,它是告诉你生成字符串,怎么生成,怎么加密字符串,什么格式,里边怎么包含数据,都没有定义,只告诉你生成字母串,这个就叫解决方案啊,你把这个知道啊,所以说以后别人问到你说这o to啊,你给我说一下它是不是一种协议,都要明确它只是一种解决方案。
24:19
所以这个啊,原理性的东西,我们做这个说明大家对它有个了解就可以了啊,主要你把我这张图能看懂,包括这些就知道就足够了啊,别人问到你把我刚才讲这些能说出来,这问题基本上没有什么问题了啊。就能回答的也是可以的。然后把这个啊。
我来说两句