hello, 大家好,这一节呢我们来实现一下这个用户注册的接口,并在注册成功之后返回 token 啊,这一节的重点就是在注册成功之后返回 token 给前端,让前端实现一个什么注册之后就 登录成功啊,就就拿到 tok, 他是不是就可以登录了啊?就已经登录成,再不需要再去跳转到登录页面了,直接就登录成功了。好,那么这个逻辑我们来分析一下啊,首先我们要了解啊,用户注册的本质是什么?他其实就是向数据库添加了一个新用户 啊,然后这个注册的大概的一个环节,一个路径的话,我们可以看这啊,首先是验证环节,我们要对这个用户名进行验证,确保这个用户名是唯一的啊,他是我们登录的一个账号啊,检查用户名是否合法这一块的话,你可以根据你的这个他填写的这个用户名的字符去去检查。还有密码验证,就是密码墙 长度的验证,必须是八位,包含大小写或者什么你匹配预设规则这些由你来自己决定啊。那还还有一个邮箱验证,就是邮箱格式的检查,邮箱活跃度的一个验证,我们这块可能对这个活跃度吗?目前不会去做,只是对他的格式啊做一个验证的一个检查,那么验证通过之后,就是去创建一个用户信息,然后 把这个发过来的信息给他存储到后端,并返回这个 tok, 验证失败,那返回相应的一个失败信息啊,就可以了。那么我们直接去我们代码当中啊,看一下,在这个 u 字当中,我们先来把这个啊这些里面先删掉。 from the rest 方 work 一个,呃,这几个先引入进来, we will send mixing filters。 呃,我们不管他用不用,我们先引入进来啊,我们都知道他注册用户其实就是向用户,向数据库添加一个用户,那么我们可以用这个试图集 class 一个,比如说 regressed r e g r s t e r 一个 we will send, we will send, 然后他调用这个 mixings, 点 create mode mixing, 是不是添加 will sends 点 greens we will send 啊?这个我们在前面已经学过了,然后 press set 它的 user, 查询出来,还有一个 severalizer, 对不对?这个 severalizer request severalizer, 这两个我还没有创建,我们先把这个 user 给它引入进来,这个 user 的话,我们引入张狗的默认的一个用户啊,张狗点一个它这个 user 的话 off, 我们不这样来引入啊,我们直接这样 impart 一个 get user model, 然后一个 user 等于一个 get user model 啊,这个会返回啊,你看他这个方法其实返回的是什么?嗯,他在这儿通过这个章狗 apps 点 get model, 然后获取了配置中的这个 off 毛豆,他其实在这个默认配置中啊,他配置了一个优子,其实是什么?就是默认的那个优子啊,他配置好的默认有一个,那么直接用这个,他会如果你自行定义了这个优子的模型的话,他会通过这个啊 方法把它给覆盖掉啊,覆盖掉,这样子比较便于我们以后的一个扩展下来,就是我们去实现这个 sale leather 的,对不对?我们先要创建一个,新建一个 sale leather s sale leather 点 p y 加一个 s 吧,我们看之前我们这个有没有 s 啊?有 s, 然后还需要把这个什么,把这个 user 也要给它拿过来啊,这个 user 我们要序列化它嘛,对不对?所以说我们要在这儿,这个 class class 一个 r e g r s t e r civilizer s e r so the model civilizer, 那么这个,我们这个 civilizers 还没给它引入进来啊。来, from 一个 rest rest from worker civilizers 这是不是 class, 一个 meta meta, 然后这 model 是什么? user fields? 我们给它一个 user name, password 和 email 啊, email, 那么这块儿的 email 我们不需要再去单独的给它拎出来了,我们可以在这儿给它新增一个字段,叫 password 一, password 一等于一个什么 civilizer? 差 feel 的一个 red only 等于 train, 就是它是一个允许啊,只写的一个不读,返回的时候这个是只读的,那么把这个 password 一也要给它加进来啊。 password 一,这个要来做什么事情呢?就 云让用户输入两次密码,输入两次密码,然后这两个密码来比对一下,看两次输入的是否一致啊,是是否一致,这个逻辑很常见,我们在其他的这些站点可能会都遇到过啊。 好,我们对这个先注视一下啊,注视一下,这个叫注册,注册序列化,注册序列化器啊,然后把它引入到这个视图当中。 呃, from 这个点儿点儿一个 civilizers important regret civilizer 好,这个就好了,我们快速把它引入到 url 当中,我们用的是呃, 试图集啊,在这引入一下。 from 一个 rest from work, 一个 there rotors rotors, 一个 impart, 一个 defect rotor 啊,这个之前我们已经做过了,我们快速的把这过一下啊, r u t r r 等于一个 defi rote, 然后 rotor 点 register, 给它添加的是一个 r e g r s t r 注册的,然后这儿应该是一个,我们把 vivos 没有引入进来啊,把 vivos 先给它引入进来。 from their impart 一个 vivos 啊,把这个实图引入进来,然后是一个 vr e vivos, 点一个 regressed vivos, 贝斯 name 也给它一个而已。 g r s t r 好, 引入进来之后在这啊把它结构出来。 rotor 点 urls, 好,这样子我们就已经拿到了这个 url。 那我们快速的去看一下啊, 快速去看啊,这就是你看 user you guys, 他现在是不是有了这个登录了,我们先给他输入一个他的密,我们都知道这个后台已经有了这么一个用户了,我们输一下,随便给他输个一二三 四五六,一二三四五六。然后这邮件的话随便给他说,我们先提一下,看一下啊,你看他默认已经对我们这个用户名啊已经进行了验证,给你们返回了一个错误信息,叫已存在一位使用该名字的用户, 说明他对用户名也已经验证了,而且这个是必填,长度为一百五十个字符或以下,只能包含字母,数字,特殊字符以及这个。那么对密码是不是我们还没有去校验啊, 你看这块密码的强度啊,以及匹配,那么用户已经匹配过了,那么密码如何呢?要如何来做呢?其实就在这个 civilizer 当中啊,我们来先给他在这得发一个 video data, video data 然后比对一下 password 一和 password 二, 来判断一下从这个 a t t r s 当中啊,这是提交过来的 password 和 password 一,然后两次密码 进行一个比较,如果不一致的话,我们给它返回一个两次密码输入不一致啊,输入不一致,我们可以来看一下来,现在一二三四五六七,我们再来 pose 它一下。好,我们刚才这个要刷新一下啊,来, 一二三四五六七六啊,这随便打一个 post, 哎,已存在一位,他在这检查了之后就没有走到这个什么里边去啊? atrs 里边去,你看一下啊,他在用户名效验之后,他就没有走到这来,不信我们可以看一下 print 一个 atrs, 就是你发生了这一个错误,下面的错误我都不再去检查了啊,我们可以再重新来一下,你们先看一下啊,看,这一点很好啊,你看他是不是没有走到这个里面来啊?没走进来啊,你发生一个错误,其他的错误我都没必要检查了,我直接给你抛了 一个。什么四百错误啊,抛了一个四百错误,那么我们再来看一下,如果我们这个用户名允许啊,用户名我们给他一个啊 test, 这个绝对是没有的啊,然后一二三四五六的,其他的不变,我 post 一下,你看是不是两次密码不一致啊?两次密码不一致, 那么还有一个密码强度的一检查,一二三四五六七,一二三四五六。是不是太常见了?这个其实章狗内部给我们有提供了这么一个方法啊,就是在这里边 from 一个 jungle, 点一个细纹 点一个 off, 点 off 一个 password, 一个 video data, 一个 import, 一个 videota, 这个方法就是来用来教验这个密码强度的啊,我们直接在这啊, 直接在这底发一个 video deta, 其实这个啊,把这后边的改成一个 pass word, 然后这块的参数也是 pass word 啊, pass 啊, pass word, 来把它最后给它又返回出去,然后在这进行一系列的检查。这个 viludita 杠 password, 它是一个固定的写法,这 vilidita 杠后边的这个是带的你这要教验的这个 字段的名称,就说你指定要教验哪一个啊?要教验哪一个,那我们直接把这个 video data password, 把这个 password 给它传递进去啊,传递进去,这就达到了一个教验。哎,教验 教练密码强度啊,强度,教练密码强度,来, 我们现在来看一下啊,我们把这先刷新一下,重新来提交一下啊,一个 test, 然后一二三四五六,这也给他一个一二三四五六,我们输的都对啊。邮箱我们也给他一个,来 post 一下,你看他是不是给我们 返回了。一个密码长度太短了,必须包含至少八个字符,而且太常见了,你只包含了一个数字,我们还得包含其他的,对不对啊?还得包含其他的,这是密码强度的一个检查。密码强度检查之后啊,我们还要对这个密码做进一步的处理啊,进一步的处理,因为我们在数据库当中啊, 数据库当中不会去直接存储这个铭文的密码,比如说你这传了一个一二三四五六,我怎么可能会把这个存到数据库去呢?我要对它进行加密之后把加密的密文存到数据库啊,也就说网上流行的一个段子,为什么网站不直接告诉你的密码,而是让你自己去修改密码?其实啊,网站的 制作者包括他自己他都不知道这个密码你的密码是什么,他在数据库不存铭文啊,他说的是密文。这个如果说别人去撞库撞到你这个数据库,即使他把你的用户信息拿到了,他拿到的也是一段密文,密码他也登录不了你的账号,这是一个安全性的一个问题啊, 所以这块我们要给他在这要返回的时候要有加密一下,给他返回出去。那这张狗也给我们提供了一个默认的加密方法,叫 ram 张狗 their seven, 这个 their off 里边一个 high 啊哈,是这个包里边有一个 important, 一个 mark password, 与它对应的应该是有一个 check password, 这个是来检验这个蜜文和铭文比较的啊,它两个参数。 check password, 它是两个参数, 你输入的一个密文啊,它是来教验的,教验你这是否啊?是否是有效的?来 mark password 是什么?它是来加密的啊,它是来加密的。哎,都有 several letter 当中 一个 mark password, 把它给它一个返回出去,它是一个加密,一个解密的啊,一个加密一个解密。 好好,现在我们来看一下啊,我们把这个用户给他注册进去,是吧?我们比如说我们在这里注册一个李四啊,李四, 呃,密码的话我们给他一个复杂一点吧,复杂一点按的密一二三。呃,点点好不好啊?把这个我们两个给他用一样的啊,电子邮件的话随便给他一个。 嗯, post 来两次,密码不一致,你看为什么?嗯,大家知道为什么吗?是因为啊, 来,我们来看一下它发生的这个原因啊,我们来看一下这个 print 一个 a t t r s。 啊,我们来这看一下啊,来找一下它 它的原因,比如说我们现在再提交一下,它还是两次不一致,来,我们给它在这来看一下。你看,我们在这 print 这个 a t t r s。 的时候,它给我们传递过来这个 password 是一个加密过的, 但是这个 password 一,它不是加密过的啊,它不是加密过的啊,是因为它先要走到这个教验里边去啊,密码强度,然后在这,然后给它返回。所以说啊,我们要搞清楚它的一个教验的一个先后顺序。 那么说明啊,我们这个 mark password 就不能在这里来啊,在这里来加了啊,必须要先在把这个 a t t r s。 那这儿 先是 a t t r s 是不是等于这个了?它等于这个,那么我们在这儿把,先把这个做完之后啊,是不是最后要把这个 a t t r s。 给它 返回出去? atrs, 返回出去,在这里边我们直接来修改 atrs, 一个 password 等于一个 mark password, atrs, 然后把这个给它删掉啊, d e l 一个 atrs, 一个 password。 一、为什么要把它去掉?我们验证过之后,我们要传入到 模型的时候,其实它里边是默认是没有这个字段的,我们添加的时候不需要这个,所以我们把它也要给他删除掉啊,剔除掉来,现在我们再来去找一下, 刷新一下,我们 get 重新来。里四,呃,密码 and me 一二三点点儿啊,把这个 点点,然后随便啊,随便写写一个 post, 你看是不是注册成功了?注册成功他之后,他返回的这个 password, 他是不是把 password 也给我们返回过来了?嗯, 但是其实我们不应该让他把 password 这个加密后的密文给返回水,我们只需要返回他的 user name 已没有或者是其他的东西就可以了。那应该怎么做呢? 其实啊,我们只让这个 password 也变成一个只写的啊,只写的不让它读取就行了。 password 和 password 一啊,我们调换一下啊,一个在上边,一个在下面,把它的这个 read only 给它返回一个 train 啊,让它成为止血的,然后 username password, 然后以没有给它返回就可以了。那么我们在这来再测试一下啊,我们再注册一个用户,用户名叫思思。呃,随便啊,思思。 呃,还用刚才的密码吧,要不然我们忘了啊。 and me 一二三点点点点,我们同样用一,用 这个邮箱的话,我们试一下 post 啊,它还可以注册成功啊,按道理这个邮箱的话,我们也要让它唯一啊,也要让它唯一,那么其实也要可以去要去用后边啊, cviz 中去检查一下。那这个作业呢, 我们留给大家来做啊,把这个用户名,这个 email 啊,把这个 email 的唯一性也要给他检查一下,在这里来教验啊,来教验。我相信大家一定会的啊。 那么还有重要的一步,我们注册成功之后,还要给他返回 token 信息啊,返回 token 信息,那么我们可以在这啊,这里边有一个 它,这个 rest fun work, 这个 g w t 给我们提供了一个啊,提供了一个方法叫 from rest fun work, 一个 smelly g w t 一个点儿,一个什么 talkings? 它有一个 talkings, 这个 import r e f 啊,这个,它 这个类他给我们可以手动的,他有的一边有一个 for user 的方法啊,你可以点进去看一下啊,他里边为我们提供了一个来,你看他继承的是这个 token, token 里边有一个,呃,我记得是有一个 for user 的一个, 哎呦哎呦哎呦,咋这么多啊?你看他有一个 classmas 的一个类方法 for user, 传第一个 user 出来,他就给我们可以返回出来这个 tok, 对不对啊?返回出来这个 tok, 那么我们可以通通过这个的方法来做啊, 给它一个函数 define 一个 get, 刚 talkings for user 啊, talkings for user, 那么就是把这个 r e f 啊 the for, 把这个 user 给它传递进去,然后给它 return 一个来把这两个刷新 talking 和这个, 呃,登录的这个 a c c e s。 刚淘开啊,刚淘开,然后给它返回出来就可以了。返回出来,那么我们在这儿能不能拿到它的这个 user 呢?在这个序列化器当中能不能拿到 user, 给它添加到这个呃数据当中去? 那这里我们就要用到一个自定义的一个序列化方法类了啊,方法了啊,就这个,比如说我们在这有一个 talkings, 给它默认一个 talkings, 一个字段, civilizer there are civilizer message field, 那这个字段呢?它可以通过这样子的一个方法得刷一个 get on talkings 啊, 这写错了, get 刚 talking talkings, 然后这里边传入一个 self 和 o b g 啊,这个 o b g 其实就是获取到的当前的一个对象,那么这个 get gun 它是也是一个啊, 固定写法,它的固定写法后边跟的就是你这一块的这个啊,这个 talkings 这个名称啊,这个名称,那么这块儿我们就可以把它这个 get talking for user, 这个 o b g 就是当前的一个用户就可以返回出来了,把它就可以返回出来,然后把这个 talkings 给它 加到这里。那么我们在注册成功之后啊,就可以拿到这个了,比如说我们现在随便注册一个,嗯,嘿嘿嘿嘿,啊,嘿嘿嘿嘿,一二三点点啊,嘿嘿,一二三点点,来,这个 有像我们随便给他添一个。好,你看他是不是拿到这个 talking 四了,把它添加进来了, rfaccs 把这个字典给我们返回出来了。好,这样子就达到了我们的一个需求,那这一节的内容呢?就是这些,谢谢大家。
粉丝905获赞2018

我是一名大三的学生,刚开始学做项目,最近接触到的托肯不是很理解,请问托肯到底是个什么东西?在项目中用来干什么的?那这期我们就一起看看托肯是什么。 看这些视频之前或者之后,建议大家都看一下瑞塔之前出过的一期前端登录流程的视频,这两个视频的内容关联还是很大的。 tok 的意思是令牌,是用户第一次登录时,服务器生成的一段加密字母串,然后返回给客户端后面,客户端每次向服务端请求资源的时候,只需要带上 tok, 不用再带着用户名和密码去请求。 所以为什么要带托克呢?是因为用户登录成功后,后续需要反复到服务器获取数据,服务器对每一次请求都要去验证是哪位用户发送的,用户是否合法,这样反复查询数据库会对数据库造成过大的压力。当后续请求都带上托克后, 服务器直接解密 tok 就可以知道用户的相关信息,省去了查询数据库的操作,能够减轻数据库的压力,这就是 tok 的作用用。 由于基本所有请求都需要携带托克,那么总不能每一次都手动配置吧,所以我们可以在请求拦截器中统一封装,让每个请求都能带上托克,关注瑞塔,每天进步一点点。

哈喽,大家好,今天继续给大家说测试那些事。上期我们说到了三审,提到了它是存在于服务器的,例如说是内存里面,但是用它的话会引发一些问题。 第一个当越来越多的用户发送请求的时候,那内存的一个开销会不断的增加。第二个的话,当服务器采用一个分布式或者是集群的时候,三是就会面对一个负载均衡的问题,而负载均衡多服务器的情况下是不好确认当前用户是否登陆了,因为 多服务器是不共享一个三摄的。那这种情况之下呢?高肯就产生了偷看是什么?它其实也会被称作一个令牌,由服务端生成的一串自服串,而这串自服串商城的规则呢,是有一个 u id 就用户的唯一身份标识,还有一个探母就是当前时的街。 还有一个就是赞,是一个签名,只用一个哈巴西压缩成一个定长的十六制的字母串,以防止第三方恶意拼接。最后是加一个固定参数,这个参数你可以加也可以不加。操作的一个认证方式,它其实就类似于一个临时的证书签名,并且是一种无端无状态的一个 认证方式。我们状态其实就是说我服务端并不并不会保存身份认证相关的一个数据。高肯在客户端一般的话是存放在一个 logo sorry, 也就是一个本地存储,酷 k 或者是三 s 都为止中,在服务器的话一般是存在于数据库中。 那整个托克的一个认证流程是怎样的?第一个的话就是用户首先通过用户名和密码发送一个请求,然后第二个是服务端进行一个验证,成功后的话,服务器会返回一个头肯给到一个客户端。第三个的话就是客户端收到数据后保存在一个客户端。第四个就是客户端再次访问服务端的时候,请求的时候会带上一个口肯。第 五个的话是服务器端教练一个头啃,教练成功的话,那就会返回一个请求数据,教练失败就会返回一个错误状态吗?那说了这么多,我们实际偷看的一个应用是在哪方面呢?其实主要是两个,第一个的话是可以抵抗 cifr f, 也就是一个跨站请求物理伪造,用户在访问银行网站的时候,他们是很容易受到一个跨站请求伪造等公, 并且能够被利用起访问其他的一个网站。假如说我表单提交的 s r c 是一个北京点看我,就是一个北京银行北京点看我,然后他后缀的话会加上一个 u 三服装模式。假如说是张三,哦,这是一个黑客,那我 m o t 就是一个提前是一千的话,会针对刚才的一个表单提提交 s r c。 那如果是一个三审和酷 k 的形式的话,用户打开网页的时候其实就已经转给了一个黑客一千元了。因为 frm 发起的一个 boss 的请求是并不受到浏览器的一个同源策略的一个限制,因此可以任意的使用他其他域的一个酷 k 向其他域发送一个 boss 的请求,形成一个 c s r f 的一个攻击。 呃,在 pose 的请求的一瞬间 ok, 会被浏览器自动添加到一个请球头里面,但是涛肯他是不同的,涛肯他是开发者为了防晒这个而进行特特别设计的一个令牌浏览器,不会说自动添加到一个嗨的头里边,攻击者是也是无法防卫用户的一个头肯,所以提交的表 单是无法通过服务器进行一个过滤的,也就无法形成一个攻击。这个应用就是可以实现一个 c o l s, 也是一个跨区资源共享。如果说我公司内部有多个系统的时候,那么我就可以通过投肯来实现一个免登陆资源共享,比如说我要一个 qq 登陆之后,然后 qq 空间他可能也就已经登陆了。 其实在 qq 登录 qq 之后生成了一个投肯,那这个投肯不仅可以在一个 qq 系统进行使用,在腾讯旗下的任何一个系统都能使用,只要其他系统的开发对投肯进行了一个解析,那这个解析规则的话是提前进行沟通好的, 是因为有这个特性,所以偷看也是被用作一个单点登录的一种时效方式,那具体单点登录是什么?然后它是有哪些实现方式?我们下一期给大家说。好,今天就到这里感谢大家的观看,喜欢我就点赞关注我啊,拜拜。


好,我们来说一下这道题,就是前端使用 token 登录的流程是什么?前端使用 token 登录的流程一般就是以下这几点,第一个呢,就是用户提交登录信息,用户在前端界面输入用户密码、用户名和密码,然后点击登录按钮。 第二步呢,就是发送登录请求,前端呢,把用户输入的登录信息通过 pose 的请求发送给后端,那么请求的数据呢,一般使用 jason 格式或表单格式进行传递。第三步,被后端的验证登录信息。 后端接收到登录请求后呢,会对用户提交的用户名和密码进行验证,验证可以设计数据库查询密码、加密对比等操作。 第四步呢就是生成 token, 如果用户提交的登录信息验证通过,后端呢,会生成一个 token, 那么这个 token 呢,它一般就包含了用户的信息,过期时间、签名 等等,是用来标识用户身份的这样一些信息。第五步呢,就是返回 token, 那么后端呢,他会将生成的 token 通过响应的方式返回给前端,通常将 token 作为响应体的一部分,或者放在响应头部当中的 authorization 自断当中。 第六个呢,就是前端保存这个 tok, 前端接收到后端返回的 tok 后,一般会把 tok 保存到本地,通常使用浏览器的 web storage 来进行存储。第七个呢,就是发送 tok, 那么前端保存了 tok 之后之以后,每次与后端进行交互的时候,前端都会在请求中携带这个 tok, 通常他会把这个 token 放在请求的头部中 authorization 字端里边。第八个呢,就是后端验证这个 token 了,那么后端接收到带有 token 请求的时候呢,会进行 token 的验证验证可以包括解析 token、 教练签名、教练过 时间等等一系列的操作。第九个呢就是返回响应,如果 top 验证通过,那么后端呢,会根据请求的内容进行相应的处理,并且呢把处理结果以响应的方式返回给前端。最后一步就是前端呢来处理这个响应,前端他接收到后端返回的响应后,根据业务需要进行相应的处理, 如果需要展示用户信息或者维护登录状态,可以解析头肯中的用户信息,并根据信息进行逻辑处理。 那么上面这个流程呢,就是咱们常见的前段使用 token 登录的这样一个流程,那么根据具体的业务需求可能会有一些细微的差别,同时为了保证安全,可能需要注意对 token 进行合理的存储、传输和设置过期时间等一些操作。

产品经理和技术开会的时候,经常会听到一个词,偷啃。那这玩意是啥?为什么要有?他能用在哪里?所以解释一下产品经理技术名词,偷啃 也叫令牌,是用户系统和健全流程中基础中的基础,每个产品经理都应该知道。比如我们去看长视频的 vip 会员,那能不能看系统将做一次判断,判断用户有没有看这个片子的权利,这个过程叫做健全。 在这个过程中,就好比我们去住酒店,如果每次开门都去找前台,一是前台会累死,二是效率极低,所以通常情况下用的是房卡,那 tok 就是那张房卡。 token 是一个加密的石榴禁制的紫浮串,里面记录了用户信息、权限信息、有效期信息等等。每次健全的时候,拿着 token 健全开门就可以了,以减轻系统的压力。既然是房卡,就意味着可能出现被盗取等情况,这些情况产品经理和研发在做具体功能设计的时候,会采取一系列的方案,课程里面反着都有,就不详细介绍了。 top 几乎在所有的用户健全过程中都会出现,比如常规的会员健全、第三方授权登录、扫码登录、多账号登录等等,所以他是产品中基础中的基础。具体以上这些功能怎么做?去看课程中的用户系统内一堆课。

讲完了整个认证过程呢,我们再来去聊一聊,在 j w t 当中,它的一个数据结构是长什么样子? 首先接到 it 呢,它全称叫做 jason web token, 它把用户信息呢,它其实是加密在整个 token 当中的,而服务端它不会去保存任何信息,所以说它是一个无状态的, 那他到底存了哪些信息呢?他具体呢是分为三个部分,焊的头部,然后拍弄的核载,然后呢还有个签名, 首先呢我们来去看一下头部,那在头部当中呢,是有两个参数啊,第一个他表明的是这个签名使用的算法是什么?那他默认呢是 h s 二五六,那第二个呢是令牌的类型,如果我们使用的是 jason web tok, 那它呢这一块就叫做 j w t。 好,那讲完了第一块,那再来看看最重要的第二块, 核载这一部分,那核载里面存的信息呢,是非常之多的,而且它呢也是 j w t 的主体部分,整个的 j w t 格式是一个阶层格式啊,那大家呢,可以去抽象的去理解,我现在转换过来的一种格式,它里边呢是有七个默认字段的啊。 首先第一个你发行人是谁?我们这一般呢是去填一个企业的名称,那第二个呢是我们这个托肯,那他的到期时间是什么时候? 因为我们本身是一个无状态,对吧?那我们怎么去保证这个拖肯他要过期呢?所以在这呢,我们要去给他写一个具体的指定的到期时间啊。那第三块呢是主题,那对于主题这一块呢,我们其实可以任意发挥,我们 可以去存一些自己想存的东西,去存一些想要交互的东西,那都可以。那第四块呢,是指具体的用户是谁? 那假设我们这边呢,其实可以去存一个用户 id 啊。第五个呢是他是说在某个时间段内不可用这个,其实我们就可以去设置一个预发布的时间。那假设我这个拖肯生成出来, 但是这个 top 呢,现在不能用,要到晚上才能用,所以说这个 top 我们可以去指定一个具体的生效时间。好,那倒数第二个发布时间, 这个很容易理解,对吧?那就是它的一个发布时间吧,也不多讲。那具体最后一个,那 j w t id 这个呢,实际上就是用来标识这个 j w t 的这几个呢,是它的一个默认字段,那同时我们自己还可以自定义字段,那我们想去存什么,实际上都可以啊。那最后这一块呢, 它是保证安全的。那这一个部分呢,它其实也叫做签名部分,它里面存的呢,是前面这两部分加密之后的一个签名。它主要的一个作用呢,它其实就是用来保证我前面这两部分呢,是不能够被改的。一旦 我改了前面一点点,那后面的签名部分呢,实际上是不能用的。而且我们指定的签名算法我们加的严,而其他人呢,是无法去篡改签名的,他只有可能篡改前面,但是他改了实际上也没有什么作用, 所以它通过这种方式呢,就保证了里边的安全性。这个呢就是 j w t 的一个数据结构,它确实是能够解决我们前面所提到的传统 cookie 加 session 模型的一些问题,但是它也并不代表着它没有缺陷,而 j w t 最大的一个缺陷是什么呢?其实也就是我们前面 解决掉那个问题,服务器他不会保存绘画状态。我们跟大家去讲一种场景啊,假设我们在整个使用期间,我还没有到期这个托肯,但是我想强制的把这个用户下线掉,因为他本身是一个无状态的,对吧? 如果我们想给他下线是不可能的,所以我们无法去解决,那取消令牌或者说更改令牌的可能, 只有一种办法啊,我们去服务器端再教研一遍,也就是把他的状态信息呢给他存下来,那这样呢,实际上就改变了 j w t 的一个作用啊, 所以这个呢是它最大的一个缺陷。那第二个缺陷呢,是由于 j w t 它是不加密的,它虽然不能篡改,但是它同样能够把前面的信息呢解析出来,所以我们在用 j w t 的时候呢,我们不能够用来去传递一些敏感信息, 这个呢是它的一个缺陷,那同样的还一个缺陷呢,是它会有更大的一个空间占用, 因为到最后我们会把头部和窄和签名转成一个 b s 六十四的格式,然后呢给到前端。 那我们去想一下,我们这么多参数,这么多字段,我们组成之后,他的一个大小,实际上在网络传输的过程当中,他会比我们用 jsid 的方式呢会大很多啊。那最后呢,咱们再做一个总结啊, 我们在整个外部应用当中,我们不能够把这道题当成 session 来使用,那在很多情况下面,传统的 cookie 加 session 实际上也能工作的挺好, 而 j w t 适合的场景呢,就是一次性的命令认证,那比如说我们去颁发一个有效期非常短的一个 token, 那即使他暴露了呢,也没有关系。那第二个呢,是我们也能够去尽可能的去减小,那我们无法去让令牌失效的一个时间。好,那今天的内容呢?咱们聊到这就结束了,我同样的准备好了一份笔记,我们简单来看一下, 如果大家有需要这份笔记的话,那可以评论区扣一领取,或者说私信我都可以,视频配套资料原码笔记私信笔记带走。

请说一下 talking 一般存放在哪里?那么 talking 呢,一般呢就存放在客户端的存储介质中常见的一些存放位置,比如说像浏览器的本地存储, log storage, 三声 storage, 或者是 cookie 啊,或者是移动应用程序的一些本地存储等等。那么一般来说呢,这样做的好处呢,就可以使得服务器呢不需要维护绘画状态,从而减少呢服务器的一种负担, 提高它的整体的一个可扩展性和性能。然而呢,我们一般来说的话呢,是不推荐将 talking 呢存放在传统的 cookie 中的,主要来说呢,有以下几个原因,那么第一个呢,就是考虑到安全性, 那么因为 cookie 呢,在每次 http 请求的过程中,都会是自动的发送到福气,如果说 talking 存放在 cookie 中来说的话,就可能会把相关的信息暴露给潜在的恶意用户或者是攻击者。那么第二个就是跨越限制,因为浏览器都有同源策略,所以它会限制跨越请求 cookie 的能力,那么如果说将 talking 呢存放在 cookie 中,那么 就会受到同源策略的限制,无法在跨越请求中携带 token。 那么第三个呢,就是会增加一定的风险,将 token 呢存放在 cookie 中呢,容易受到跨站脚本攻击,比如说像叉 s 或者是跨站请求伪造攻击,比如说像 csif 等相关的一些安全威胁。 那么攻击者呢,可以通过恶意脚本来获取用户的 gucci 信息,进而进行一些恶意操作。那么为了解决上述问题呢,那么通常呢,我们一般呢将 gucci 呢哎存放在呢比较安全的一些地方,比如说我们前端可以使用 local storage 或者是三宣 storage, 那么在移动应用程序中呢,使用安全的本地存储机制,或者是说呢,将 talking 作为请求头的一部分发送给服务器,这样呢就可以提高他的安全性,降低风险,并允许呢更灵活的进行跨越请求。同时来说的话呢,服务器端呢,也采取相应的一些安全措施,比如说在 talking 中使用适当的加密算法或者是签名, 从而限制 talking 的相关的一些啊,比如说像生病周期啊等等。那么以上来说就是啊,解释了为什么不存藏在库比类的相关的一些原因。我是旭旭,祝您面试成功。

你了解接口测试师吗?那你说一下 top 肯和三十有什么区别吧?嗯,我只了解库可以和三十,对 took 没有过多了解。 哎,我跟你说一下,但既然你了解三审,那你应该知道三审是有些弊端的。首先呢,是服务器的资源占比较大,三是呢,是存储在服务器的内存之中的,随着用户量的增加啊,服务器的压力会比较大。那第二呢,三审的安全度比较低, 关键是基于孤僻进行用户识别的,那如果孤僻被截破了,用户就非常容易受到跨界请求伪造的攻击。第三,拓展性不强,随着用户量的增加,系统如果使用了多服务器的负载进行方案,那三线的数据呢,是保存在单节点中的,用户第一次访问的是服务协议,那用户再次请求时,可能访问的是另外一台服务器二, 服务器二就获取不到这个三线信息了,就会判定为用户没有登录度。所以如果我们改用偷看的认证机制,那由于服务端不保存三证了,他只是生成偷看,然后验证偷看,咱们用服务器 cpu 的计算时间换取了三摄的存储空间。而且即使是使用了 多台服务器的咨询,只要美男经济的处理逻辑算法是一样的,这就意味着基于通天认证的应用不需要去考虑用户在哪一台服务区登录过,这就为应用的拓展提供了便利性,解决了筛选拓展性的弊端,明白了吗?


一百秒快速认识 season 和 token 实现用户身份验证主要有两种方法, season 绘画和 token 令牌。传统的外部方法是采用基于 cooky 的服务器端绘画,首先将填写的用户名和密码提交给服务器,服务器验证通过后,会在数据库中创建并存储一个 season, 然后向用户响应一个赛神 id, 最终将其保存在浏览器的 cookie 当中。 cookie 是浏览器保存建制队的地方,当用户保持登录状态时, cookie 将与每个后续请求一起被发送出去。 言而言之,我们在客户端和服务器之间开启了一个有状态的塞升绘画。这种方法效果很好,但也存在一些缺点,还容易受到跨战请求伪造的攻击。攻击者将用户引向他们提供的站点,以执行具有风险的操作,比如提交付款啊,更改密码等等。 好在目前绝大数代码都在使用现代框架编写,所以出现这种状况的概率呢也非常低。另一个缺陷是,腮身的存储是需要空间的,你需要将它存储在数据库中。但由于当下的大多数云应用程序都是水平扩展, 这会给生产环境带来平静。而基于偷啃令牌的身份验证恰好解决了这个问题,但也带来了一系列的挑战。首先从客户端向服务器发送其登录的详细信息。他不存储三 cid, 而是生成 jason web 头肯,也就是 gwt。 gwt 是在服务器上使用撕药创建的,然后返回浏览器,通常保存在本地存储中。在客户端请求接口时,请求头戴上 gwt 后,服务器只需要验证签名,不需要在其他地方进行数据库的查找,特别适合于分布式为服务。然而,头坑令牌仍然 可能被攻击者劫持,并且很难实际生效,导致无法在服务器的后台对用户身份进行一个验证。 总之呢,对于这两种方法来说,在腮身绘画中最重要的是要理解,身份验证状态是在服务器上处理的,而头跟令牌是在客户端上管理的。以上就是腮身和头肯的快速介绍,感谢您的收看。

最近的视频我最主要是来围绕微服务的知识进行讲解,然后结合商业项目, 就是我现在在做的项目忍者到家,每期一个知识点,欢迎点赞关注,别错过。今天的知识点的话,最主要是讲一下我们 supremecolo 的微服务之间脱肯的传递, 这个也是很基本的,我们脱肯的传递目的是为了什么呀?是为了在分布式环境,然后你去拿到这个用户的共享信息, 也可以说我们以前说的什么色系,一般常见的有两种方式,一种是说我们的脱贫放在那个方法参数去传递,但是这样的传 尽管很简单,但是工作量大也麻烦,因为你每一个方法上面都要去卸载一个图片。第二种方式就是我们所通过拦截器去传递,也就是我们的微服务之间调用的时候,先去走拦截器, 然后会把你的这个 token 放在黑的头里面。当然这种方式的话,第一个是说我们可以在我们的参数里面进行配置,配置了之后能达到这样的效果。还有一个我们可以在程序里面进行配置,配置了也能达到这样效果。 然后我们结合现在的项目,然后来跑一下,大家看一下我的订单要审核退单,退单的话是说我是一个用户的服务,我会去调订单的服务,那我用户的服务就是匡威服务调用,匡威服务调用之后, 我的 talking 怎么从用户的微服务传到订单的微服务?然后我们先看一眼代码, 就这里就是去调用的 order 的微符,入口的话,我们看一下从哪里入口进来的 使用,这里就是种空气儿的层,那就是控制层,客户师傅商家退单,然后退单之后,然后调用,最后走一些油逻辑,最后调 sovis 层。我在空气儿的层, 有些时候这里只是为了演示,所以说我在 ctrl 存的时候,把当前这个登录用户他的脱品,我放到这个这个 vo 里面向下传递, 然后在这里的话,然后实际上我就相当于是我把我的嗯 topic, 然后传到这个什么呀?传到订单服务,大家看一下这个方法, 像这种方式的话,实际上我就是通过请求头去传递,大家配置的时候可以配置下绿 quest head, 然后因为我的 took 是用他的 k c 以这个 k 为 k 的,所以说我就直接用的这个, 然后后面套屏,那这样传过去的话,我那边去怎么接收啊?我们看下我们订单方怎么去接收,就是通过这种方式去 接收的,通过这种方式去接收,我这里只是为了演示啊,我真正的项目是不是这么用的。好,我们现在看一下,这里是添加了个退的退单记录,比如说我们订单我们要退单,然后我们调一下 我的每一个为服务,是让你写那个登录拦截器啊,登录拦截器里面使用最主要是为火气 talking, 然后再把 talking 通过 j w t 的解析,然后再解析成它的用户 id, 然后再根据用户的 id, 然后去拿当前这个用户的什么 c 型信息,因为我是放到 redis 里面的,那你肯定就知道是哪个用户登录的,这里我们跳过,然后我们在这里来看一下 是不是你这样的方式,也就那边用黑的,然后你这边用黑的去接收作品,这样就传过来了,就可以拿到这个用户的筛选信息,这是第一种方式。然后如果说我们不用这种方式,我们还有其他的方式吗?因为如果说这样的话,那你每一个地方都要这么去写, 只要匡威服务调用都要加,这样这样是不是大家是不是觉得很麻烦呢?那我们就会想到什么呀?千元编程是吧?那我们会用到拦截器,那么换一种方式,我们这里调用的时候就是补充这个,然后我们这里补充这个信息, 然后我们也不用这个方法,然后我们把这个方法注视掉,也就不用传脱品, 那么用这这个方法,这种的话我打算用兰姐去传传 top, 也就是在请求的时候把这个 top 放到黑的头里面, 把这里也改一下,这样改了之后我们重启一下 news 那个尾符,我们也重启一下,两个尾符都重启一下。 大家刚才看到我这个实际上就宽微服调用的时候,实际上我这里就是用通过风格了,是不能 colue 的,之前一般是通过风格去调用啊,实际上他就是封装的一个 http 请求啊。那你内蒙的话实际上是指向什么呀?那你的内蒙是指向我要调用哪个微服, 因为你你只想调用哪个微服务,他才知道我要去调用哪个微服务。后面的话这个是上下文案的标识,他的唯一性。 然后我们看,我们看一眼他的这里面,像这里面的话就是你定义的呃,一个 a p i a p i 接口里面使用就定义的这个是路径,这个是微服务,微服务的名字,然后这下面的话就可能都是些路径。然后我们看一下我们是怎么用拦截器的,看一下来看 figure 里面,实际上我们是用到这个 finger configure, 我们实现一下这个请求拦截器就 ok 了,实现一下这里面的方法就 ok, 也就是这样的话,他就会把这个,嗯,你请求的时候,然后他就会就只用这个方法,然后就会把你的这个啊请求里面的 tok 信息放进去,放到这个 这个 k k 里面去,我们试一下申请退单,还是刚才这个, 大家看一下我为什么这里就是说嗯? user 这里面让,虽然已经报错了,我 user 这里面请求的时候没请求到。 talking 这个脱口为什么没传过去呢?大家知道是什么原因?为什么没传过去?那是因为这个没有执行,是不是我们的这个这个封口咖啡根本就没执行?因为我这里打了断点的,为什么没执行呢? 那我们要看人,我刚才写的文档,第一个是参数配置,第二个是程序配置,那我们看人,我们先用程序配置,那这 程序配置了怎么他就会去调用呢?我们看看我们的实现类里面,然后我们在这里可以去配一下 configure, 然后我们配一下。 好,我们这样配置了之后,他就应该会去执行刚才那个那个地方接口上面,然后去配置一下 user 这个微服务,我们重启一下, 我们再试一下申请退单, 我只是拿这个接口做一个思念, 好,这里就开始去调调那个 order 服务了,是不是我配置了这个,是不是他这个就开始执行了?然后我们看到这里他执行了什么,是吗? 然后最后会去把我这个 talk 给信息,我们看一下 这个 token, 然后这个 token 的话就放它会放到清洁图里面, 然后我们再看一下 order 这边的打印信息, 是不是刚才是空的,是吗?这次的话他是不是托肯已经火气到了?那就是证明我们把这个托肯信息已经传递过去了,那我们如果说不用这种方式还有其他方式吗?这样的话我就相当于就是我每一个里面都要去这样配,是吗?可以, 那我不用这种方式,还有比其他方式,也就是我刚才文件上提的,那就是参数配置。 参数配置怎么配呢?那我们看一下我的这边, 哎,就是这里的话他可以写多个拦截器啊,比如我这里他要去执行哪个拦截器,那我在这里 定义好就行了。我这里执行什么纳米器啊?也就是还是我刚才克拉斯支部所变了一种形式,那我这里再发布一下, 因为我这里已经取消了,取消了,如果说刚才那个是那边要不配置的话,那肯定是跑不起来了, 达不到目的。那我现在然后把因因为我改了 us 嘛,然后我一会儿再重启一下。 嗯,刚才有有错?改到哪里改错了? hmm。 看一下我这里哪里写错了?没写错呀。 哦,这里这里没对齐啊,我们再发布一下试一下。这个就是 e y i y m 二它那个格式,它是比较严格的,那你没写对, 我们还是拿这个退单接口来举例,申请退单 怎么还没启动好? fallabia 申请退单 还是走到这里呢?走到这里之后我们看一下会不会执行,刚才这个拦截器是不是他一样的也会执行呢?哎,就是我们刚才是在程序里面去配置,或者说是 在嗯, max 中配置,中心级配置都是一样的效果,能达到一样的效果,实际上是等价的。 这里放的的话,那边肯定就能解释到,我们看一下,看一下那个 order 微服是不是这下面 是不是他也也获取到了,并且他讲解出来是我这个 token 二用户 id, vr 用户 id 二是什么?平台客服经理,是吧?我现在平台客服经理,所以说这样的话我们就完成了微服务这样的 token 传递。 token 能传递的话,那肯定我们的 c 形式嘛, 那肯定就能在不同的微服务之间共享。今天就讲到这,大家关注一下,后面会持续分享微服务相关的知识,我会结合我的项目来讲解。