动手实现一个可发送短信随机密码的高安全性用户密码系统
- 1、背景
- 2、设计
- 3、代码实现
- 3.1、首先先看一下ThreadSpecificSecureRandom组件代码实现,如图所示
- 3.2、调用nextInt的UserPasswordSystemManager组件的代码实现
- 3.3、UserPasswordSystemManager组件所提供的方法,请看下图图
- 3.4、我们在来编写一段代码,来模拟整个注册用户的流程
1、背景
通过ThreadLocal来实现高安全性用户密码系统发送随机密码案例。
现假设我们是某个社交网站,对于每个新来的用户,我们可能都需要注册之后,才能进行使用网站的功能,但是对于注册流程,可能每个网站的流程都不一样,假设我们社交网站的注册流程为,先填写用户名和手机号,点击注册之后,系统注册成功之后,会创建一个随机密码,通过短信发送给用户,以后用户可以用该密码进行登录,也可以自己修改密码,我们来看一下整体的业务流程图
2、设计
从图中,我们可以清晰看到,我们的社交系统的注册流程,在这里我们在用户服务里,定义了一个UserPasswordSystemManager组件,专门负责用户的注册新用户业务的流程,包括保存注册用户信息和生成随机密码发送到用户手机上等,请看下图
由于在用户注册流程中,逻辑还是比较复杂,可能需要和其他服务交互等等,但是我们为了提升性能,不希望生成随机密码和发送随机短信给用户等操作阻塞主业务流程,我们可能需要采取异步处理
用一个异步方式去处理随机密码的生成和随机密码短信的下发的任务,请看下图