注册登录鉴权话术

本文介绍了用户注册和登录的详细流程,包括使用Hibernate Validator的表单校验,短信验证码的实现,密码的BCrypt加密,JWT+RSA的无状态登录,以及登录校验和登出操作。在注册时,通过短信微服务发送验证码,并限制发送频率。登录过程中,通过JWT和RSA生成加密token,使用Feign进行服务间调用,校验登录时检查token的有效性和续签操作。登出时将JWT放入黑名单并删除客户端cookie。最后讨论了网关如何根据JWT进行权限控制。
摘要由CSDN通过智能技术生成

用户注册:

前台需要给我们传递用户名、密码、手机号、手机验证码。验证用户前台传过来的数据是否符合规范,我们使用的Hibernate Validator框架实现的服务端表单校验。短信验证码这块,我们采用的阿里的大于短信接口来做的,我们单独搭建了一个短信微服务,发送的短信请求通过MQ消息由短信微服务消费,进行短信发送。密码我们使用的是Spring提供的BCryptPasswordEncoder加密算法,分成加密和验证两个过程:

  • 加密:算法会对明文密码使用UUID随机生成一个salt,使用salt结合密码来加密,得到最终的密文。

  • 验证密码:需要先拿到加密后的密码和要验证的密码,根据已加密的密码来推测出salt,然后利用相同的算法和salt对要验证码的密码加密,与已加密的密码对比即可。

短信验证码的有效期为30分钟,为了验证短信验证码的时效性,我们保存到了redis中,手机号作为key,验证码作为value,设置有效期为30分钟。另外为了防止恶意攻击,我们限制一个手机号1分钟之内只能发送一次验证码,这个也是通过redis来实现的,手机号拼接"_yes"为key,验证码为value,设置有效期为1分钟。为了防止机器恶意调用验证码接口,我们这个地方使用图形验证码来进行限制。

用户登录

使用JWT+RSA加密技术实现了无状态登录。我们单独搭建了一个校验微服务来进行校验,验证用户名和密码的话需要通过feign组件来调用用户微服务来进行查询,另外的话,我们使用JWT+RSA加密生成一个token返回给前台,写到co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值