package cn.tedu.youbiliprojectbackend.controller; import cn.tedu.youbiliprojectbackend.response.RestBean; import cn.tedu.youbiliprojectbackend.service.AuthorizeService; import jakarta.servlet.http.HttpSession; import jakarta.validation.constraints.Pattern; import org.hibernate.validator.constraints.Length; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.web.context.HttpSessionSecurityContextRepository; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** * 邮箱验证注册功能 * * @author 赵錾 * @date 2023年6月7日15:56:19 */ @Validated @RestController @RequestMapping("/api/auth") public class AuthorizeController { private final String EMAIL_REGEX = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$"; @Autowired AuthorizeService service; /** * 发送验证邮件 * 验证email是否符合正则表达式,若不符合则报错 * * @param email * @return */ @PostMapping("/vaild-email") public RestBean vaildateEmail(@Pattern(regexp = EMAIL_REGEX) @RequestParam("email") String email, HttpSession session) { String sessionId = session.getId(); System.out.println("sessionId=" + sessionId); String s = service.sendVaildateEmail(email, sessionId); System.err.println("s=" + s); //打印返回的数值,便于观察错误 if (s == null) { return RestBean.success(sessionId); } else { return RestBean.failure(400, s); } } @PostMapping("/register") public RestBean registerUser( @Length(min = 2, max = 16) @RequestParam("username") String username, @Length(min = 6, max = 18) @RequestParam("password") String password, @Pattern(regexp = EMAIL_REGEX) @RequestParam("email") String email, @Length(min = 1, max = 10) @RequestParam("nickname") String nickname, @Length(min = 6, max = 6) @RequestParam("code") String code, String sessionId) { String s = service.validateAndRegister(username, password, email, nickname, code, sessionId); System.out.println("Reg :" + sessionId); System.err.println(s); //打印返回的数值,便于观察错误 if (s == null) { return RestBean.success("注册成功"); } return RestBean.failure(400, s); } }