实现⽤户的登录注册功能
在基于Spring Boot框架上,实现⽤户的登录注册功能,
⾸先分析前期所需要的规划。
1 实现登录注册
前端向后端发起post请求
2⽤户密码安全性
密码是不推荐明⽂⼊库的,在后台采取秘钥加加不可逆加密⽅式进⾏加密后再存⼊数据库
3 登录状态的保存
http是⽆状态的协议,要实现⽤户登录状态的保存可以通过,cookie和session,进⾏验证。
4 防⽌cookie被盗
cookie内采⽤token和ip地址结合MD5加密的随机序列。
5密码回功能
html怎么实现登录验证功能可以通过唯⼀标识⽤户的⼿机号和邮箱,发送验证链接,这个链接地址为了安全起见要加⼊时间戳和唯⼀随机数来保证这个链接只在某个时间内有效,
过期过着密码已经重置,则删除这个唯⼀的随机数
6防⽌恶意攻击
最有效的⽅式就是加⼊验证码,如果⽤户和某个ip在⼀段时间时间内频繁失败登录超过阈值次数,则限制在⼏分钟内⽆法登陆。
其次在实现上
由于http是⽆状态的协议,我们需要通过cookie和session来进⾏验证,具体是实现是,浏览器向服务器初次发送登录注册请求
的时候回输⼊登录名和密码,这时候,服务器会⽣成⼀个token保存在数据库中,并写⼊cookie中,然后服务器⽣成⼀个session,
session中包含着⽤户的信息。浏览器每次发送请求的时候都会携带cookie,服务器通过cookie⾥的token来验证⽤户,通过验证则放⾏。
登录: 1 ⽤户登录时验证⽤户名和密码
2⽣成token保存在数据库中,将token写⼊cookie
3将⽤户数据保存在session中
4 请求时都带这cookie,验证
单点登录问题
对于多个系统拥有多个不同的tomcat容器,不同的tomact容器中的session是不共享的。session不共享问题有以下的解决⽅案
1 实现tomact集的session全局共享(集内内个Tomcat的session都完全同步)这样会影响集的性能不推荐使⽤
2根据请求的ip进⾏hash映射,请求ip会⼀直访问同⼀个节点,不推荐,这个节点宕机会丢失数据
3将session存放在redis中(使⽤redis模拟session)推荐
还可将登陆功能单独独⽴出来,作为⼀个sso单点登录系统,其他⼦系统进⾏登陆时,请求sso进⾏验证,sso将返回token写⼊cookie中。下次访问时带上cookie。
1 sso⽣成token,将⽤户信息写⼊Redis中,并设置过期时间
2 其他系统请求sso系统,得到sso系统⽣成的token写⼊到cookie中
3 每次请求都会带上cookie,,拦截到token,验证是否已经登陆。
以上,将登录注册作为⼀个单独的系统,将⽤户的信息保存在Redis中
cookie跨域问题
认证中⼼