最后
早期单一服务器,用户认证
缺点:单点性能压力,无法扩展
WEB应用集群,session共享模式
解决了单点性能瓶颈。
问题:
-
多业务分布式数据独立管理,不适合统一维护一份session数据。
-
分布式按业务功能切分,用户、认证解耦出来单独统一管理。
-
cookie中使用jsessionId 容易被篡改、盗取。
-
跨顶级域名无法访问。
NQ
分布式,SSO(single sign on)模式
解决 :
用户身份信息独立管理,更好的分布式管理。
可以自己扩展安全策略
跨域不是问题
缺点:
认证服务器访问压力较大。
业务流程图
认证中心模块**(oauth认证)******
数据库表:user_info,并添加一条数据!密码应该是加密的!
在设计密码加密方式时 一般是使用MD5+盐的方式进行加密和解密。
登录功能
业务:
-
用接受的用户名密码核对后台数据库
-
将用户信息写入redis,redis中有该用户视为登录状态。
-
用userId+当前用户登录ip地址+密钥生成token
-
重定向用户到之前的来源地址,同时把token作为参数附上。
生成token
JWT工具
JWT(Json Web Token) 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。
JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上
JWT 最重要的作用就是对 token信息的防伪作用。
JWT的原理,
一个JWT由三个部分组成:公共部分、私有部分、签名部分。最后由这三者组合进行base64编码得到JWT。
公共部分
主要是该JWT的相关配置参数,比如签名的加密算法、格式类型、过期时间等等。
私有部分
用户自定义的内容,根据实际需要真正要封装的信息。
最后希望可以帮助到大家!
千千万万要记得:多刷题!!多刷题!!
之前算法是我的硬伤,后面硬啃了好长一段时间才补回来,算法才是程序员的灵魂!!!!
篇幅有限,以下只能截图分享部分的资源!!
(1)多线程(这里以多线程为代表,其实整理了一本JAVA核心架构笔记集)
(2)刷的算法题(还有左神的算法笔记)
(3)面经+真题解析+对应的相关笔记(很全面)
(4)视频学习(部分)
ps:当你觉得学不进或者累了的时候,视频是个不错的选择
在这里,最后只一句话:祝大家offer拿到手软!!
NG开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**