其他分享
首页 > 其他分享> > login功能在业务层的一个小细节

login功能在业务层的一个小细节

作者:互联网




service层的Impl代码:login()

    @Override
    public User login(String username, String password) {

        //1.先判断数据库中有没有该用户名
        User user = userMapper.getUserByName(username);
        if (user==null){
            throw new UserNotFoundException("用户名不存在!");
        }
        //2.判断该用户是否已注销isDelete=1则已经注销
        if (user.getIsDelete()==1){
            throw new UserNotFoundException("该用户已注销!");
        }
        //3.判断用户名密码是否正确
        String password1 = user.getPassword();//先获取数据库中加密过的密码
        String salt = user.getSalt();//从数据库中获取该用户的盐值
        String md5Password = getMD5Password(password, salt);
        //对比用户输入的密码加密后和数据库中的密码是否一样
        if (!md5Password.equals(password1)){
            throw new PasswordNotMatchException("密码输入错误!");
        }

        //当前的用户数据不用全部返回,返回的数据是为了辅助其他也米娜做数据展示的作用。
        //因此只需要返回的一个只包含uid、username、avatar的新user1对象中
        User user1 = new User();
        user1.setUid(user.getUid());
        user1.setUsername(user.getUsername());
        user1.setAvatar(user.getAvatar());//头像信息
        return user1;

    }


这样做的好处是:使得数据的传输体量变小了,传输体量越小性能越高。




另外补充


状态管理:可以将数据保存在cookie或者session中,可以避免重复度很高的数据

session:用户id、用户名

cookie:用户头像


session是保存在服务器中的,更加安全,但是如果在高并发情况下,用户群体多的话,服务器压力很大。(适合用户群体少的后台管理系统)

cookie是保存在浏览器端,京东、淘宝等大型网站都是讲用户信息保存在cookie中,虽然不安全,但是我们可以对信息加密或者将涉及隐私的信息不保存到cookie,不存在服务器压力。(适合用户群体大的互联网系统)


参考链接:https://blog.csdn.net/qq_38775392/article/details/104335738





标签:功能,String,user1,用户,细节,cookie,user,new,login
来源: https://www.cnblogs.com/kakafa/p/16102766.html