【代码解析】代码解析之登录(1)
代码:
@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 和密码作为参数? ? ?
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, "用户名或密码错误");
? ?
如果用户信息不存在,则抛出一个服务异常,表示用户名或密码错误
??
? ? ? ? ? ??
? ? ? ? }
? ? }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!