前言
用户登录输错密码三次将自动锁定该用户,本章用mybatisplus
提示:以下是本篇文章正文内容,下面案例可供参考
一、数据库展示
数据库字段展示
erroeNum为错误次数,isLock:0未锁定,1:锁定
二、使用步骤
1.注入对象
代码如下(示例):
/*
* @since 2021-04-30*/
@RestController
@RequestMapping("/users")
public class UsersController {@AutowiredIUsersService uersService;@AutowiredIPartsService partsService;@AutowiredJwtConfig jwtConfig;
2.编写判定步骤
代码如下(示例):
/*** 登陆页面* @param userName* @return*/@RequestMapping("/login")public Object login(String userName,String userPwd) {Date d = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");QueryWrapper<User> queryWrapper = new QueryWrapper();queryWrapper.eq("userName", userName);//查询用户名是否存在User one = uersService.getOne(queryWrapper);Map<String,Object> map;map = new HashMap<String,Object>();//判断用户是否存在if (one != null) {queryWrapper.eq("userPwd", userPwd);User user = uersService.getOne(queryWrapper);//判断用户名是否存在if(user!=null){//判断用户错误次数是否大于3if (user.getErrorNum()<3) {//判断登录账号是否被锁定if(user.getIsLock()==0){// 省略数据源校验//此处我们已经开始前后端分离,未分离的可不写--开始String token = jwtConfig.getToken(userName + userPwd);if (!StringUtils.isEmpty(token)) {map.put("token", token);}//未分离可不写---结束//登陆成功修改错误次数为0且登陆时间改为当前时间且将锁定码改为0user.setErrorNum(0);user.setLoginTime(sdf.format(d));user.setIsLock(0);uersService.updateById(user);map.put("code",0);map.put("msg","登陆成功");map.put("data",user);}else {map.put("code",1);map.put("msg","用户已锁定,请联系管理");}}else {//调用锁定方法user.setIsLock(1);uersService.updateById(user);map.put("code",1);map.put("msg","用户已锁定,请联系管理");}}else {//错误//修改登录失败次数+1uersService.updNumByUserid(one.getUserId());map.put("code",1);map.put("msg","密码不对");}}else {map.put("code",1);map.put("msg","用户名不对");}return map;}
注意不要忘记给解锁区域代码修改errorNum为0,只修改isLock
字段为0,后续会出现问题
@RequestMapping("/setUnLock")public Object setUnLock(@RequestParam("userId") Integer userId) {User u = new User();u.setUserId(userId);u.setIsLock(0);u.setErrorNum(0);if (uersService.updateById(u)) {return new Result(0, "解锁成功");}return new Result(1, "解锁失败");}
总结
本次仅为学习编程项目日志,正在学习中的小白一个,欢迎指教