用户注册功能
注冊功能
接口說明
基本邏輯:
-
1)校驗短信驗證碼
-
2)生成鹽
-
3)對密碼加密
-
4)寫入數據庫
-
5)刪除Redis中的驗證碼
UserController
/*** 注冊* @param user* @param code* @return*/ @PostMapping("register") public ResponseEntity<Void> register(User user, @RequestParam("code") String code) {Boolean boo = this.userService.register(user, code);if (boo == null || !boo) {return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();}return new ResponseEntity<>(HttpStatus.CREATED); }UserService
public Boolean register(User user, String code) {// 校驗短信驗證碼String cacheCode = this.redisTemplate.opsForValue().get(KEY_PREFIX + user.getPhone());if (!StringUtils.equals(code, cacheCode)) {return false;}// 生成鹽String salt = CodecUtils.generateSalt();user.setSalt(salt);// 對密碼加密user.setPassword(CodecUtils.md5Hex(user.getPassword(), salt));// 強制設置不能指定的參數為nulluser.setId(null);user.setCreated(new Date());// 添加到數據庫boolean b = this.userMapper.insertSelective(user) == 1;if(b){// 注冊成功,刪除redis中的記錄this.redisTemplate.delete(KEY_PREFIX + user.getPhone());}return b; } package com.leyou.user.utils;import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils;import java.util.UUID;public class CodecUtils {public static String md5Hex(String data,String salt) {if (StringUtils.isBlank(salt)) {salt = data.hashCode() + "";}return DigestUtils.md5Hex(salt + DigestUtils.md5Hex(data));}public static String shaHex(String data, String salt) {if (StringUtils.isBlank(salt)) {salt = data.hashCode() + "";}return DigestUtils.sha512Hex(salt + DigestUtils.sha512Hex(data));}public static String generateSalt(){return StringUtils.replace(UUID.randomUUID().toString(), "-", "");} } <dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId> </dependency>?
總結
- 上一篇: 完成短信发送功能
- 下一篇: hibernate-validate