网站刷新新前台是什么意思,桂林欣梦网络招聘,重庆市工程建设信息网新网站,设计与网站建设案例1.发送验证码 1.发送post请求 数据封装在map 获取map的手机号码 2.调用service层将手机号码 传入过去 3.正常返回状态码200
RestController
RequestMapping(/user)
public class LoginController {Autowiredprivate UserService userService;/*** 获取登录验证码*…1.发送验证码 1.发送post请求 数据封装在map 获取map的手机号码 2.调用service层将手机号码 传入过去 3.正常返回状态码200
RestController
RequestMapping(/user)
public class LoginController {Autowiredprivate UserService userService;/*** 获取登录验证码* 请求参数phone Map* 响应void*/PostMapping(/login)public ResponseEntity login(RequestBody Map map){String phone (String) map.get(phone);userService.sendMsg(phone);return ResponseEntity.ok(null); //正常返回状态码200}
} 1.随机生成6位数字验证码 2.将验证码存入reids 使用固定前缀手机号码 过期时间5分钟
Service
public class UserService {Autowiredprivate SmsTemplate template;Autowiredprivate RedisTemplateString,String redisTemplate;/*** 发送短信验证码* param phone*/public void sendMsg(String phone) {//1、随机生成6位数字//String code RandomStringUtils.randomNumeric(6);String code 123456;//2、调用template对象发送手机短信//template.sendSms(phone,code);//3、将验证码存入到redisredisTemplate.opsForValue().set(CHECK_CODE_phone,code, Duration.ofMinutes(5));}}
2.用户登录 1.从map中获得手机号码 和 验证码 2.调用service层 传入手机号码 和验证码 3.返回map map里必须要有token信息 和 isNew 是否新用户 /*** 检验登录*/PostMapping(/loginVerification)public ResponseEntity loginVerification(RequestBody Map map) {//1、调用map集合获取请求参数String phone (String) map.get(phone);String code (String) map.get(verificationCode);//2、调用userService完成用户登录Map retMap userService.loginVerification(phone,code);//3、构造返回return ResponseEntity.ok(retMap);} 4.从redis获取验证码 5.对redis验证码进行一个非空判断(防止已经删除了) 与 对传入来的验证码进行一个校验 如果
redis验证码非空 或 验证码错误 则抛出异常 6.删除redis存的验证码(防止重复使用) 7.创建一个boolean值 isNew 默认是false(不是新用户) 8.调用api传入手机号 查找用户 9.判断用户是否存在 8.如果不存在就是新用户 重新new一个(因为没查找出来是null 必须在new一个) 设置他的手机
号码 以及密码(密码默认123456 md5加密) 然后保存 返回它的用户id(这里我有点不懂 insert 之后
为什么user 就有id) 9.将id设置给user isNewtrue 表示是个新用户 10.创建map 存入id和手机号码 使用jwt加密成token 11.创建map保存数据 将生成的token存入进去 和 isNew 返回给controller层
/*** 验证登录* param phone* param code*/public Map loginVerification(String phone, String code) {//1、从redis中获取下发的验证码String redisCode redisTemplate.opsForValue().get(CHECK_CODE_ phone);//2、对验证码进行校验验证码是否存在是否和输入的验证码一致if(StringUtils.isEmpty(redisCode) || !redisCode.equals(code)) {//验证码无效throw new RuntimeException();}//3、删除redis中的验证码redisTemplate.delete(CHECK_CODE_ phone);//4、通过手机号码查询用户User user userApi.findByMobile(phone);boolean isNew false;//5、如果用户不存在创建用户保存到数据库中if(user null) {user new User();user.setMobile(phone);user.setPassword(DigestUtils.md5Hex(123456));Long userId userApi.save(user);user.setId(userId);isNew true;}//6、通过JWT生成token(存入id和手机号码)Map tokenMap new HashMap();tokenMap.put(id,user.getId());tokenMap.put(mobile,phone);String token JwtUtils.getToken(tokenMap);//7、构造返回值Map retMap new HashMap();retMap.put(token,token);retMap.put(isNew,isNew);return retMap;}