福建网站开发公司电话,快速开发平台对比,有没有做网站的电话,天水网站建设目录
一、背景
二、传统登陆功能强制登陆功能
1、传统的实现方式 2、session存在的问题
三、jwt--令牌技术
1、实现过程
2、令牌内容
3、生成令牌
4、检验令牌
四、JWT登陆功能强制登陆功能
1、JWT实现登陆功能
2、强制登陆功能
3、运行效果
五、加密/加…目录
一、背景
二、传统登陆功能强制登陆功能
1、传统的实现方式 2、session存在的问题
三、jwt--令牌技术
1、实现过程
2、令牌内容
3、生成令牌
4、检验令牌
四、JWT登陆功能强制登陆功能
1、JWT实现登陆功能
2、强制登陆功能
3、运行效果
五、加密/加盐
1、加密方式
2、基于MD5的加密
1MD5弊端
2加盐
3生成加密密码
六、博客系统部分代码 一、背景
现已经完成了博客系统的发布博客功能、更新博客功能、显示博客列表页功能、显示详情页功能、删除博客功能、退出博客登陆功能还有登陆功能、强制登陆功能还未实现。前面已完成的功能主要使用了mybatis的增、改、查等功能和前面的图书系统较为相似此处不再做详细介绍文章结尾附上主要代码。
二、传统登陆功能强制登陆功能
1、传统的实现方式
客户端输入密码和用户名---服务器根据用户名去数据库查找密码---数据库密码和用户密码进行比较---相同完成登陆并将内容存储在session中---强制登陆时判断有无session即可。 2、session存在的问题
但此时这种方法会存在问题
1为了保证项目不因为一个服务器挂了我们通常会采用多机部署项目试想一下若登陆请求我们发送给了服务器1服务器1正确响应并在内存中保存了session信息将sessionId通过Cookie发送给客户端。客户端在登陆的前提下带着SessionId再次进行其他请求此时若将请求发送给了服务器2服务器2根据sessionId查找session信息发现服务器2没有保存此时就会认为客户端未登陆但其实客户端在服务器1上已经登陆了。session实现强制登陆时不能满足多机部署。
2在重启服务器时session信息就没了若用户刚登录服务器重启了此时就会要求用户重新登陆带来不好的用户体验。
3用户的session信息都保存在服务器内存中若用户很多session信息就多占用的内存就大导致服务器挂掉的风险也大。
三、jwt--令牌技术
1、实现过程
客户端输入密码和用户名---服务器根据用户名去数据库查找密码---数据库密码和用户密码进行比较---相同完成登陆并给客户端一个令牌---强制登陆时服务器判断有无令牌即可且令牌内容不能改变若改变就失效了。
2、令牌内容 令牌包含三部分的内容
1Header---头部
头部包含jwt使用的算法如HS256以及jwt的类型。
2Payload---负载
负载是存放有效信息的地方类似session可以自定义也可以存放令牌过期时间。此部分可以解码还原原始内容。
3Signature---签名
签名部分可以防止jwt内容被篡改签名是基于头部和载荷计算得出的同时也使用了安全密钥进行加密若jwt中任何一个字符改变进行验证时以同样的密钥签名头部和载荷发现两次签名不同就会导致令牌失效。jwt的内容可以公布不是进行了加密而是保证了唯一性防止被篡改。类似于身份证。
3、生成令牌
先引入依赖 生成的jwt内容为
eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJsaXNpIiwiaWF0IjoxNzEwNTc2NjcwLCJleHAiOjE3MTA1ODAyNzB9.FQQTi586Wp_9S-tCjO1rmHhHqSuFWdkXF3KlLcotgFU
解析该jwt 4、检验令牌 运行结果 只要结果不为空就表明令牌是正确的。
四、JWT登陆功能强制登陆功能
1、JWT实现登陆功能
后端处理 前端请求响应 2、强制登陆功能
使用拦截器进行强制登陆判断用户令牌是否正确。从本地存储中拿出令牌放在请求header中根据拿到的内容判断是否能拿到负载内容。
由于每个页面都要进行强制登陆判断所以将从本地存储中拿出令牌放在请求header中的操作统一放在common.js中且要在发送请求前放在header中 3、运行效果 此时就能正确显示博客列表页了。
五、加密/加盐 对于数据库中的敏感信息例如密码等需要对其加密不然黑客入侵后就会获取到用户的密码造成一定的损失。
1、加密方式
1对称加密
对于明文的加密和密文的解密使用的是同一种密钥。常见算法有AES,DES,3DES,RC4,RC5,RC6
2非对称加密
明文的加密采用公钥密文的解密采用私钥。公钥可以公开私钥不可以公开。常见算法有RSA,DSA,ECDSA,ECC
3摘要加密
将任意长度的明文转为固定长度的数据不可逆无法解密。对于相同的明文进行摘要加密后结果相同。常见算法有MD5,SHA1,SHA2,CRC。
2、基于MD5的加密
1MD5弊端
博客系统采用MD5加密方式将密码转换为固定长度的数据。但只使用MD5存在弊端
①虽然MD5不可逆但对于密码较短的可以借助工具进行解密
②密码一样的用户MD5转换后是一样的一旦一个用户暴露其他也会暴露。
2加盐
可以对于密码加上固定长度的随机值(盐值)明文盐值----进行MD5加密。
还需考虑一个问题在进行验证时我们如何拿到盐
可以将盐值插入在MD5加密后的数据里验证时分离出加密结果和盐值即可。
为了简单我们就直接将盐值拼接在加密结果后面了。
3生成加密密码 将数据库修改为 进行登陆验证 六、博客系统部分代码
1、登陆功能
1客户端请求响应 2服务器响应 2、展示博客列表功能
1客户端请求响应 2服务器响应 3、展示博客详情功能
1客户端请求响应 2服务器响应 4、更新博客功能
1客户端请求响应 2服务器响应 5、删除博客功能
1客户端请求响应 2服务器响应 6、发布博客功能
1客户端请求响应 2服务器响应 7、退出博客登陆 8、强制登陆功能 若需要全部源码可以进入葛雅宁 (ge-yaning) - Gitee.com
点击java学习下的基于spring下的博客管理系统