代码来源
public class LoginSuccessHandler implements AuthenticationSuccessHandler {
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
response.setContentType("application/json;charset=UTF-8");
String username = authentication.getName();
SysUser sysUser = sysUserService.getByUsername(username);
// 根据用户id获取角色信息
List<SysRole> roleList = sysRoleService.list(new QueryWrapper<SysRole>().inSql("id", "select role_id from sys_user_role where user_id=" + sysUser.getId()));
// 遍历所有的角色,获取所有菜单权限,不重复
Set<SysMenu> menuSet = new HashSet<>();
for (SysRole sysRole : roleList) {
// 根据角色id获取权限信息
List<SysMenu> sysMenuList = sysMenuService.list(new QueryWrapper<SysMenu>().inSql("id", "select menu_id from sys_role_menu where role_id=" + sysRole.getId()));
menuSet.addAll(sysMenuList);
}
List<SysMenu> sysMenuList = new ArrayList<>(menuSet);
sysMenuList.sort(Comparator.comparing(SysMenu::getOrderNum));
// 构建权限菜单树
List<SysMenu> sysMenuListTree = sysMenuService.buildMenuListTree(sysMenuList);
String token = JwtUtils.genJwtToken(username);
response.getOutputStream().write(new ObjectMapper().writeValueAsBytes(R.ok("登录成功").put("authorization", token).put("currentUser",sysUser).put("menuList", sysMenuListTree)));
}
}
Set.java
boolean addAll(Collection<? extends E> c);
boolean addAll(Collection<? extends E> c);
ArrayList.java
public ArrayList(Collection<? extends E> c) {
Object[] a = c.toArray();
if ((size = a.length) != 0) {
if (c.getClass() == ArrayList.class) {
elementData = a;
} else {
elementData = Arrays.copyOf(a, size, Object[].class);
}
} else {
// replace with empty array.
elementData = EMPTY_ELEMENTDATA;
}
}