0
点赞
收藏
分享

微信扫一扫

springboot入门项目-用户登录1-持久层/业务层

Greatiga 2022-04-13 阅读 56

1. 用户登录功能简介

用户输入用户名和密码,提交给后台数据库查询,如果存在对应的用户名和密码,则登录成功,跳转到系统的主页,即index.html页面;前端使用Jquery实现。

2. 用户登录-持久层

用户登录时,需要进行用户名密码的验证,因此需要按username查找用户,可以复用注册功能时编写的sql语句和对应接口。

3. 用户登录-业务层

1. 异常规划

登录时可能出现的异常有:用户不存在、密码错误,因此需要定义两个异常类:UserNotFoundException、PasswordErrorException,这两个异常类继承ServiceException类。
在这里插入图片描述

2. 业务层接口和抽象方法
  1. 在IUserService接口中编写抽象方法
public interface IUserService {
    /*
    用户注册方法,返回用户的数据对象
     */
    void register(User user);
    /*
    用户登录,将当前登录成功的用户数据以用户对象的形式返回。
    状态管理:可以将数据保存在cookie或者session中,可以避免频繁操作数据进行获取
    (用户名、用户id存放在session中,用户头像存放在cookie中)
     */
    User login(String username, String password);
}
  1. 在UserServiceImpl实现类中重写方法

注意点:

  • 判断用户是否存在时,还需要判断用户是否被删除,即isDelete是否等于1
  • 验证密码时需要将获得的密码进行MD5加密后再比较
  • return User对象,辅助其他页面做数据展示使用
 @Override
    public User login(String username, String password) {
        User user = userMapper.findByUsername(username);
        //判断用户是否存在
        if(user == null) {
            throw new UserNotFoundException("用户不存在");
        }
        //判断用户是否被删除
        if(user.getIsDelete() == 1) {
            throw new UserNotFoundException("用户不存在");
        }
        //检测用户密码是否正确
        //1.获取盐值并将前端密码进行MD5加密
        String salt = user.getSalt();
        String checkedPwd = getMD5Password(password, salt);
        //2.从数据库获取该用户名对应的用户密码
        String truePwd = user.getPassword();
        //3.进行密码的比较
        if(!truePwd.equals(checkedPwd)) {
            throw new PasswordErrorException("用户密码错误,请重新输入");
        }
        //将当前用户的数据封装成一个新的数据,只保留uid,username,avatar三个属性值,提升系统性能
        User result = new User();
        result.setUsername(user.getUsername());
        result.setUid(user.getUid());
        result.setAvatar(user.getAvatar());

        //将当前的用户数据返回,辅助其他页面做数据展示使用
        return result;
    }

4. 单元测试

分别输入正确的用户名密码、不存在的用户名和密码、存在的用户名和错误的密码进行测试:

    @Test
    public void login() {
        User user = userService.login("Jerry", "222");
        System.out.println(user);
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论