【代码解析】代码解析之登录(1)

该文章详细描述了一段Java代码,涉及用户登录功能,包括密码加密、用户信息验证、角色绑定菜单和错误处理。
摘要由CSDN通过智能技术生成

代码:

@Override
    public UserDTO login(UserDTO userDTO) {
        // 用户密码 md5加密
        userDTO.setPassword(SecureUtil.md5(userDTO.getPassword()));
        User one = getUserInfo(userDTO);
        if (one != null) {
            BeanUtil.copyProperties(one, userDTO, true);
            he.userId=one.getId();
            System.err.println(one.getId());
            // 设置token
            String token = TokenUtils.genToken(one.getId().toString(), one.getPassword());
            userDTO.setToken(token);
            String role = one.getRole(); // ROLE_ADMIN
            // 设置用户的菜单列表
            List<Menu> roleMenus = getRoleMenus(role);
            userDTO.setMenus(roleMenus);
            return userDTO;
        } else {
            throw new ServiceException(Constants.CODE_600, "用户名或密码错误");
        }
    }

这是一段处理用户逻辑的登录代码

1.

public UserDTO login(UserDTO userDTO) {

定义了一个名为 login 的公共方法,它接收一个 UserDTO 类型的参数,并返回一个UserDTO的结果。

2.
        userDTO.setPassword(SecureUtil.md5(userDTO.getPassword()));

这行代码的意思是将用户输入的密码进行md5加密,然后存回userDTO对象中

3.

 User one = getUserInfo(userDTO);

调用 getUserInfo 的方法,来获取与输入的userDTO 匹配的用户信息,并将结果存储在 one 变量中

4.

   if (one != null) {

检查上一步获取的信息是否为空

5.

BeanUtil.copyProperties(one, userDTO, true);

如果用户信息不为空,调用 BeanUtil 类的 copyProperties方法,将用户的信息复制回 userDTO 对象中

6. 

he.userId=one.getId();

设置he.userId的为用户对象的id ,  这里的he需要联系上下文,这里没有给出he的来源

7.
    System.err.println(one.getId());

 在控制台输出用户的ID      

8. 
  String token = TokenUtils.genToken(one.getId().toString(), one.getPassword());           

生成一个token,这里使用用户的 id 和密码作为参数     

gentoken 方法如下:

https://blog.csdn.net/m0_67930426/article/details/135328889?spm=1001.2014.3001.5502 

9.   

  userDTO.setToken(token);

将生成的 token 设置到 userDTO 的对象中

10.
     
String role = one.getRole();   

获取用户的角色     

这里获取用户的角色,如果获取到的角色是用户,登录的时候进入到用户的菜单列表,如果是管理员,登录的时候进入管理员的菜单列表。 

 11.
      List<Menu> roleMenus = getRoleMenus(role);

调用 getRoleMenus 方法来获取与用户角色匹配的菜单表,并将结果存储到 roleMenus 的变量中。

 

12.
          userDTO.setMenus(roleMenus);  

将获取的菜单列表设置到 UserDTO的对象中

13.

      return userDTO;     

返回处理后的userDTO对象

14.

以上用户信息存在的情况

        } else {

以下是用户信息不存在的情况

15.

throw new ServiceException(Constants.CODE_600, "用户名或密码错误");
   

如果用户信息不存在,则抛出一个服务异常,表示用户名或密码错误

  

            
        }
    }

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值