| | |
| | | import com.mes.common.utils.RedisUtil; |
| | | import com.mes.menu.mapper.SysMenuMapper; |
| | | import com.mes.role.entity.SysRole; |
| | | import com.mes.role.service.SysRoleService; |
| | | import com.mes.userinfo.entity.LoginUser; |
| | | import com.mes.userinfo.entity.SysUser; |
| | | import com.mes.userinfo.entity.SysUserRole; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Resource |
| | | private SysUserRoleService sysUserRoleService; |
| | | |
| | | @Autowired |
| | | @Resource |
| | | private SysRoleService sysRoleService; |
| | | |
| | | @Resource |
| | | BCryptPasswordEncoder passwordEncoder; |
| | | |
| | | @Override |
| | |
| | | //使用userid生成token |
| | | LoginUser loginUser = (LoginUser) authenticate.getPrincipal(); |
| | | String userId = loginUser.getUser().getId().toString(); |
| | | String jwt = JwtUtil.createJWT(userId); |
| | | String jwt = JwtUtil.generateToken(userId); |
| | | |
| | | //查询权限信息 |
| | | // List<String> perms = sysMenuMapper.selectPermsByUserId(userId); |
| | | //authenticate存入redis |
| | | redisUtil.setCacheObject("login:" + userId, loginUser.getAuthorities()); |
| | | redisUtil.setCacheObject("login:" + userId, loginUser); |
| | | //把token响应给前端 |
| | | HashMap<String, String> map = new HashMap<>(); |
| | | map.put("token", jwt); |
| | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public List<String> getUserAuthorityInfo(Long userId) { |
| | | SysUser sysUser = baseMapper.selectById(userId); |
| | | |
| | | // ROLE_admin,ROLE_normal,sys:user:list,.... |
| | | String authority = ""; |
| | | if (redisUtil.hasKey("GrantedAuthority:" + sysUser.getUserName())) { |
| | | authority = redisUtil.getCacheObject("GrantedAuthority:" + sysUser.getUserName()); |
| | | |
| | | } else { |
| | | // 获取角色编码 |
| | | List<SysRole> roles = sysRoleService.list(new QueryWrapper<SysRole>() |
| | | .inSql("id", "select role_id from sys_user_role where user_id = " + userId)); |
| | | |
| | | if (roles.size() > 0) { |
| | | String roleCodes = roles.stream().map(r -> "ROLE_" + r.getRoleKey()).collect(Collectors.joining(",")); |
| | | authority = roleCodes.concat(","); |
| | | } |
| | | |
| | | // 获取菜单操作编码 |
| | | List<String> perms = sysMenuMapper.selectPermsByUserId(userId); |
| | | if (perms.size() > 0) { |
| | | String menuPerms = String.join(",", perms); |
| | | authority = authority.concat(menuPerms); |
| | | } |
| | | |
| | | redisUtil.setCacheObject("GrantedAuthority:" + sysUser.getUserName(), authority, 60 * 60, TimeUnit.SECONDS); |
| | | } |
| | | return Arrays.stream(authority.split(",")).collect(Collectors.toList()); |
| | | } |
| | | |
| | | @Override |
| | | public void clearUserAuthorityInfoByMenuId(Long userId) { |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 实现UserDetailsService接口,从数据库内获取用户及权限信息 |
| | | * |