微服务 教程
1085个小节阅读:196.4k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
为了保证用户注册的信息是真实的,往往在用户注册后不能直接登录,而需要用户激活后才能登录。用户注册激活的步骤如下:
用户在页面填写个人信息,发送到后端代码。
后端验证数据后保存用户信息,但此时用户的状态为false,还不能登录。
后端拿到用户输入的邮箱,给用户邮箱发送一段随机字符串,并将该字符串保存到数据库的用户表中。
用户登录个人邮箱,点击随机字符串访问项目,项目将该拥有字符串的用户状态变为true,此时用户即可登录。
编写前台用户的MemberMapper
xxxxxxxxxx
public interface MemberMapper extends BaseMapper<Member> {
}
由于注册方法结果很多,我们注册方法需要返回的是否注册成功,如果失败需要返回失败原因。我们要在bean
目录下创建一个实体类Result
,该实体类可以封装返回的数据。
xxxxxxxxxx
// 结果对象
public class Result {
private boolean flag;// 结果
private String message;//提示信息
private Object data;//返回数据
public Result(boolean flag, String message) {
this(flag,message,null);
}
}
编写MemberService
xxxxxxxxxx
public class MemberService {
private MemberMapper memberMapper;
private BCryptPasswordEncoder encoder;
// 注册
public Result register(Member member){
// 1.保存用户
// 验证用户名是否重复
QueryWrapper<Member> queryWrapper = new QueryWrapper();
queryWrapper.eq("username",member.getUsername());
List<Member> members = memberMapper.selectList(queryWrapper);
if (members.size() > 0){
return new Result(false,"用户名已存在");
}
// 验证手机是否重复
QueryWrapper<Member> queryWrapper1 = new QueryWrapper();
queryWrapper1.eq("phoneNum",member.getPhoneNum());
List<Member> members1 = memberMapper.selectList(queryWrapper1);
if (members1.size() > 0){
return new Result(false,"手机已存在");
}
// 验证邮箱是否重复
QueryWrapper<Member> queryWrapper2 = new QueryWrapper();
queryWrapper2.eq("email",member.getEmail());
List<Member> members2 = memberMapper.selectList(queryWrapper2);
if (members2.size() > 0){
return new Result(false,"邮箱已存在");
}
// 加密密码
String password = member.getPassword();
password = encoder.encode(password);
member.setPassword(password);
// 设置用户状态为false
member.setActive(false);
// 保存用户
memberMapper.insert(member);
return new Result(true,"注册成功!");
// 2.发送激活邮件
}
}
编写MemberController
xxxxxxxxxx
"/frontdesk/member") (
public class MemberController {
private MemberService memberService;
"/register") (
public ModelAndView register(Member member, String checkCode, HttpSession session){
ModelAndView modelAndView = new ModelAndView();
// 判断验证码是否正确
String sessionCheckCode = (String) session.getAttribute("checkCode");
if (!sessionCheckCode.equalsIgnoreCase(checkCode)){
modelAndView.addObject("message","验证码错误");
modelAndView.setViewName("/frontdesk/register");
return modelAndView;
}
// 注册
Result result = memberService.register(member);
if (!result.isFlag()){ // 注册失败
modelAndView.addObject("message",result.getMessage());
modelAndView.setViewName("/frontdesk/register");
}else { // 注册成功
modelAndView.setViewName("/frontdesk/register_ok");
}
return modelAndView;
}
}