目录:
(1)session
(2)jwt校检流程
(3)jwt签名原理
(4)css
(1)session
发送一个请求:
获取数据请求,没有携带sessionid:
携带sessionid:
(2)jwt校检流程
session做用户登录验证
http请求时无状态的,需要发送多次请求,我们不希望每次请求都携带用户名和密码,我们只希望用户名和密码只验证一次,验证成功之后呢,我们把它登录成功的状态记录下来,在后续的请求里看看它有没有登录成功的标记,如果有我们就放行,让它让问受限的资源,没有的话再重新去验证用户名和密码
用session实现登录的验证,对单体项目是合适的,当时你开发的是分布是的项目,那么session技术就有点不合适了,采而采用jwt来进行登录的验证:
发送请求,生成toncken:
校验toncken:
(3)jwt签名原理
从以上程式可以发现,在Java用Base64一点都不难,不用几行程式码就解决了!只是这个sun.mis c套件所提供的Base64功能,编码和解码的效率并不太好,而且在以后的Java版本可能就不被支援了,完全不建议使用。
以上的程式码看起来又比早期用sun.mis c套件还要更精简,效能实际执行起来也快了不少。缺点是需要引用Apache Commons Codec,很麻烦
与sun.mis c套件和Apache Commons Codec所提供的Base64编解码器来比较的话,Java 8提供的Base64拥有更好的效能。实际测试编码与解码速度的话,Java 8提供的Base64,要比sun.mis c套件提供的还要快至少11倍,比Apache Commons Codec提供的还要快至少3倍。因此在Java上若要使用Base64,这个Java 8底下的java .util套件所提供的Base64类别绝对是首选!
tocken前面header和数据用了Base64进行了编码,我们在解码查看一下:
tocken具有安全性,是因为签名可以保证tocken数据不被篡改
当客户端继续把toncken发送给服务器的时候,能不能把tocken内容做一下修改,来欺骗服务器,
比如说zhang这个名字用户,只能做有限的操作,那么有admin这个用户,权限较大,能不能把tocken中内容这一部分做一下修改,来欺骗服务器呢?
发送请求的时候进行替换:
服务器校验失败:
签名是根据前两部分和一个秘钥生成的签名,前面两部分是知道的但是秘钥我们是不知道的
校验的时候会根据内容的签名值,和它预先生成的签名值不一致就说明内容发生了篡改
(4)css
display属性:
template标签(模板标签):一开始并能没有在页面显示,他要结合js代码,js可以读到模板这段代码,动态的加到div标签中
点击按钮:把form表单动态的加到out的div内
下一篇:3 ROS1通讯编程提高(1)