短信验证码登录问题

来源:4-12 短信登录配置及重构

慕斯卡7478660

2017-10-24

目前的代码中短信验证码登录使用UserDetailsService.loadUserByUsername(),来获取用户信息,但是实际场景是:

  1. 通过用户名密码登录之前是需要用户注册,也就是说UserDetailsService.loadUserByUsername()返回值不会为null

  2. 但是通过手机验证码登录用户是不需要注册的,也就是说UserDetailsService.loadUserByUsername()会返回null,这也就导致无法登录成功

请问老师这个问题如何解决?还是说一种解决方案是在发送验证码的同时也往数据库中插入一条以当前手机号为username的记录?希望老师能分享一下这个逻辑的实际解决方案。谢谢

写回答

1回答

JoJo

2017-10-25

为啥不注册就会返回null? 没有人规定loadUserByUsername必须去查数据库,你可以直接拿手机号实例化一个UserDetails接口的实例返回即可。或者按你说的,用手机号在数据库生成新用户数据也可以。实际的解决方案是跟你的业务相关的,并没有标准的做法,你想问的其实是在你的项目里应该怎么做,但是在你的项目里应该怎么做应该由你来决定。如果你想问的是我们项目中是怎么做的,我只能告诉你,我们根本没用这种登录方式:-),这种登录方式只是我用来在课程中演示如何在spring security中加入一种完全自定义的认证用的。

说了这么多,总结四个字:相信自己。

0
1
慕斯卡7478660
谢谢老师 :)
2017-10-25
共1条回复

Spring Security技术栈开发企业级认证与授权

Spring Security技术栈,REST风格开发常见接口,独立开发认证授权模块保证REST服务安全

2662 学习 · 1561 问题

查看课程