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

代码:

@Overridepublic 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());// 设置tokenString 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, "用户名或密码错误");
   

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

  

            
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313663.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022年山东省职业院校技能大赛高职组云计算赛项试卷第二场-容器云

2022年山东省职业院校技能大赛高职组云计算赛项试卷 目录 【赛程名称】云计算赛项第二场-容器云 需要竞赛软件包以及资料可以私信博主&#xff01; 【赛程名称】云计算赛项第二场-容器云 【赛程时间】2022-11-27 09:00:00至2022-11-27 16:00:00 说明&#xff1a;完成本任务…

go语言语法基础

文章目录 前言一、输入和输出常用的字符串格式化符号 二、注释三、Go常用基本语言数据类型数字类型布尔类型字符类型变量与常量数组和切片数组切片 map类型创建map增删改查特别提醒 指针 四、运算符五、条件判断语句if系列switch六、循环语句for循环标准写法死循环while循环do …

BikeDNA(三) OSM数据的内在分析2

BikeDNA&#xff08;三&#xff09; OSM数据的内在分析2 1.数据完整性 见上一篇BikeDNA&#xff08;二&#xff09; OSM数据的内在分析1 2.OSM标签分析 见上一篇BikeDNA&#xff08;二&#xff09; OSM数据的内在分析1 3.网络拓扑结构 本节探讨数据的几何和拓扑特征。 例…

360高级java面试真题

今年IT寒冬&#xff0c;大厂都裁员或者准备裁员&#xff0c;作为开猿节流主要目标之一&#xff0c;我们更应该时刻保持竞争力。为了抱团取暖&#xff0c;林老师开通了《知识星球》&#xff0c;并邀请我阿里、快手、腾讯等的朋友加入&#xff0c;分享八股文、项目经验、管理经验…

宠物猫的饲养技术,可爱猫的秘密世界

一、教程描述 从来没有养过猫的朋友&#xff0c;在你猫咪来你家之前&#xff0c;最基本的准备工作需要做好&#xff0c;比如清洁消毒屋子&#xff0c;为猫咪准备好猫砂、猫砂盆、猫粮&#xff08;不要去超市买猫粮&#xff09;&#xff0c;以及一个柔软的窝。满三个月的小猫要…

利用计算机名称共享打印机步骤,如何连接共享打印机汇总教程

转载&#xff1a;利用计算机名称共享打印机步骤,如何连接共享打印机汇总教程-CSDN博客 新到办公室第一件事肯定是连接办公区的共享打印机&#xff0c;那么对于已经设置好的共享打印机&#xff0c;我们自己的电脑要怎么连上它呢&#xff0c;下面就以win7和win10系统给大家具体讲…

exposure_line 是如何曝光的 ?

1、读者提问&#xff1a; exposure_line 是如何曝光的&#xff0c;我看网上说这个代表的是一帧曝光多少行&#xff0c; 那如果一帧 exposure_line 小于frame_length&#xff0c;那一帧后面的行就不曝光吗&#xff1f; 不知道怎么理解&#xff0c;是曝光到1500行&#xff0c;…

数据结构与算法——符号表API设计及有序符号表设计

Java学习手册面试指南&#xff1a;https://javaxiaobear.cn 符号表最主要的目的就是将一个键和一个值联系起来&#xff0c;符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据&#xff0c;我们可以根据键来查找对应的值。 符号表中&#xff0c;键具有唯一性。 符…

c语言内嵌汇编知识点记录

内容在飞书云文档&#xff0c;点击打开即可。 Docshttps://r0dhfl3ujy9.feishu.cn/docx/EaVIdjGVeoS6fUxiKWkcjAq8nWg?fromfrom_copylink

PHP与Angular详细对比 帮助你选择合适的项目技术

开发可有效扩展并提供诺克斯堡级安全性的Web应用程序和网站是每个开发人员的梦想。而使用这样的产品是每个用户的愿望。因此&#xff0c;为您的项目选择最合适和可靠的技术非常关键。 虽然PHP和Angular是完全不同的技术——PHP与JavaScript是一个更恰当的比较——但它们都广泛…

【大数据Hive】hive 运算符使用详解

目录 一、前言 二、hive 运算符分类 三、hive 运算符操作演示 3.1 数据准备 创建表dual 加载一个文件dual.txt到dual表中 模拟测试 3.2 关系运算符 is null空值判断 is not null 非空值判断 like使用 3.3 算术运算符 取整操作 取余操作: % 位与操作: & …

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述…