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