package com.miaoshaproject.controller;import com.alibaba.druid.util.StringUtils;import com.miaoshaproject.controller.viewobject.UserVO;import com.miaoshaproject.error.BusinessException;import com.miaoshaproject.error.EmBusinessError;import com.miaoshaproject.response.CommonReturnType;import com.miaoshaproject.service.UserService;import com.miaoshaproject.service.model.UserModel;import org.springframework.beans.BeanUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.*;import sun.misc.BASE64Encoder;import javax.servlet.http.HttpServletRequest;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Random;@Controller("user")@RequestMapping("/user")@CrossOrigin(allowCredentials = "true",allowedHeaders = "*")public class UserController extends BaseController{ @Autowired UserService userService; @Autowired private HttpServletRequest httpServletRequest; //用户注册接口 @RequestMapping(value = "/register",method = {RequestMethod.POST},consumes = {CONTENT_TYPE_FORMED}) @ResponseBody public CommonReturnType register(@RequestParam(name = "telphone")String telphone, @RequestParam(name = "otpCode")String otpCode, @RequestParam(name = "name")String name, @RequestParam(name = "gender")Integer gender, @RequestParam(name = "age")Integer age, @RequestParam(name = "password")String password) throws BusinessException, UnsupportedEncodingException, NoSuchAlgorithmException { //验证手机号和对应的otpCode相符合 String inSessionOtpCode = (String)this.httpServletRequest.getSession().getAttribute("telphone"); if (!StringUtils.equals(otpCode,inSessionOtpCode)){ throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR,"短信验证码不符合"); } //用户的注册流程 UserModel userModel = new UserModel(); userModel.setName(name); userModel.setGender(new Byte(String.valueOf(gender.intValue()))); userModel.setAge(age); userModel.setTelphone(telphone); userModel.setRegisterMode("byphone"); userModel.setEncptPassword(this.EncodeByMd5(password)); userService.register(userModel); return CommonReturnType.create(null); } public String EncodeByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException { //确定计算方法 MessageDigest md5 = MessageDigest.getInstance("MD5"); BASE64Encoder base64en = new BASE64Encoder(); //加密字符串 String newStr = base64en.encode(md5.digest(str.getBytes("utf-8"))); return newStr; } //用户获取OTP验证码 @RequestMapping(value = "/getotp",method = {RequestMethod.POST},consumes = {CONTENT_TYPE_FORMED}) @ResponseBody public CommonReturnType getOtp(@RequestParam(name = "telphone")String telphone){ //需要按照一定规则生成OTP验证码 Random random = new Random(); int randomInt = random.nextInt(99999); randomInt+=10000; String otpCode = String.valueOf(randomInt); //将OTP验证码与用户手机号关联,使用httpsession的方式绑定他的手机号与OTPCODE httpServletRequest.getSession().setAttribute(telphone,otpCode); //将OTP验证码通过短信通道发送给用户,省略 System.out.println("telphone="+telphone+"&otpCode="+otpCode); return CommonReturnType.create(null); } @RequestMapping("/get") @ResponseBody public CommonReturnType getUser(@RequestParam(name = "id")Integer id) throws BusinessException { //调用service服务层调取对象 UserModel userModel = userService.getUserById(id); //若获取的对应用户信息不存在 if (userModel == null){ throw new BusinessException(EmBusinessError.USER_NOT_EXIST); } UserVO userVO = convertFromUserModel(userModel); return CommonReturnType.create(userVO); } private UserVO convertFromUserModel(UserModel userModel){ if (userModel == null){ return null; } UserVO userVO = new UserVO(); BeanUtils.copyProperties(userModel,userVO); return userVO; }} 获取otp信息
手机号
获取otp短信
用户注册
手机号
验证码
用户昵称
性别
年龄
密码
提交注册
照着老师写的,自己看了好多遍,没错,调试也是正确插入了session,但是跨域获取的时候还是null |