SpringBoot登录注册退出设计
用到redis,md5
登录
判断登录密码
public ResultUtils login(HttpServletRequest request, String username, String password) {
if (StringUtil.isEmpty(username) || StringUtil.isEmpty(password)) {
return ResultUtils.error("用户名或密码为空");
}
//根据登录的账号密码依靠反射判断是否有一条数据,
User user = FindData(User.class, Userusername, username);
if (null == user) {
return ResultUtils.error("用户名或密码错误");
}
if (!user.getPassword().equals(Md5Utils.encode(password))) {
return ResultUtils.error("用户名或密码错误");
}
Map<String, Object> resMap = new HashMap<>(1);
//根据登录id生成一个token
String token = TokenUtils.createToken(user.getId(), request);
resMap.put("token", token);
return ResultUtils.success(resMap);
}
注册
public ResultUtils register(String username, String password) {
if (StringUtil.isEmpty(username) || StringUtil.isEmpty(password)) {
return ResultUtils.error("用户名或密码为空");
}
//中英文开头、数字下划线
//工具类判断
if (ValidateUtils.notChinaEnglishNumberUnderline(username)) {
return ResultUtils.error("用户名不能包含特殊字符");
}
if (ValidateUtils.notPassword(password)) {
return ResultUtils.error("密码为6-20位大小写和数字");
}
//同样依靠反射同登录
User user = FindData(User.class, Userusername, username);
if (null != user) {
return ResultUtils.error("用户名已存在");
}
String md5Pwd = Md5Utils.encode(password);
User newUser = new User()
.setUsername(username)
.setPassword(md5Pwd)
.setCreateTime(DateUtils.getNowDateTime());
baseInsert(newUser);
return ResultUtils.success();
}
退出
public ResultUtils logout(HttpServletRequest request) {
Long userId = WebTokenUtils.getUserIdByHttpServletRequest(request);
//需要用到StringRedisTemplate delete方法
//stringRedisTemplate.delete("test");根据key删除缓存
TokenUtils.deleteToken(userId);
return ResultUtils.success();
}