@attack666
2021-03-11T10:24:33.000000Z
字数 1274
阅读 623
目前的逻辑是这样的
第一步:根据request中的token信息获取userid
第二步:userService获取到id信息
注意这里有个问题,就是store/fission/o2o/infra/utils/JWTUtils.java现在的jwt中没有加载userid这一项,所以还需要改动一下(之前的jwt代码在src/main/java/cn/enilu/flash/security/JwtUtil.java)
第三步:利用shiroUser这个类来做桥梁,获取用户角色列表(t_sys_role)
第四步:装载到map中返回
问题1:上面
问题2:现在没有用户角色表,需要重新设计一个
问题3:导航栏是根据返回的信息动态生成的,所以不能说直接把前端权限放开
问题4:目前后端的数据库表和之前的角色管理方面很不一样,所以不是很好迁移,要慢慢重写
@RequestMapping(value = "/info", method = RequestMethod.GET)
public Object info(HttpServletRequest request) {
Long idUser = null;
try {
idUser = getIdUser(request);
} catch (Exception e) {
return Rets.expire();
}
if (idUser != null) {
User user = userService.get(idUser);
if (StringUtil.isEmpty(user.getRoleid())) {
return Rets.failure("该用户未配置权限");
}
ShiroUser shiroUser = ShiroFactory.me().shiroUser(user);
Map<String, Object> map = Maps.newHashMap("name", user.getName(), "role", "admin", "roles", shiroUser.getRoleCodes());
List menus = menuService.getMenusByRoleIds(shiroUser.getRoleList());
map.put("menus", menus);
map.put("permissions", shiroUser.getUrls());
Map profile = (Map) Mapl.toMaplist(user);
profile.put("dept", shiroUser.getDeptName());
profile.put("roles", shiroUser.getRoleNames());
map.put("profile", profile);
return Rets.success(map);
}
return Rets.failure("获取用户信息失败");
}