From 2c2d541aa1c5060b47c1ba5c6e3d192b2ff82fef Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期日, 28 四月 2024 14:15:21 +0800
Subject: [PATCH] fixbug:权限功能实现用户重复登录异常
---
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java | 2
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java | 2
/dev/null | 20 --
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java | 63 +++----
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java | 15 +
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java | 2
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java | 47 +++++
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java | 161 +++++++++----------
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java | 117 --------------
hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java | 10 +
10 files changed, 180 insertions(+), 259 deletions(-)
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
index e993f38..074f98b 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/filter/JwtAuthenticationTokenFilter.java
@@ -60,8 +60,10 @@
String redisKey = "login:" + userid;
LoginUser loginUser = redisUtil.getCacheObject(redisKey);
if (Objects.isNull(loginUser)) {
+ response.setHeader("token", "");
throw new RuntimeException("鐢ㄦ埛鏈櫥褰�");
}
+
//瀛樺叆SecurityContextHolder锛屼互渚涘悗闈㈢殑杩囨护鍣ㄤ娇鐢�
List<String> permissionKeyList = menuMapper.selectPermsByUserId(Long.parseLong(userid));
List<GrantedAuthority> authorities = permissionKeyList.stream().
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
index e097010..d11f2bc 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/RedisUtil.java
@@ -217,4 +217,19 @@
public Collection<String> keys(final String pattern) {
return redisTemplate.keys(pattern);
}
+
+ /**
+ * 鍒ゆ柇key鏄惁瀛樺湪
+ *
+ * @param key 閿�
+ * @return true 瀛樺湪 false涓嶅瓨鍦�
+ */
+ public boolean hasKey(String key) {
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
}
\ No newline at end of file
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
index 347731d..919fdb9 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/controller/SysMenuController.java
@@ -1,23 +1,17 @@
package com.mes.menu.controller;
-import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mes.base.BaseController;
import com.mes.menu.entity.SysMenu;
-import com.mes.menu.service.SysMenuService;
import com.mes.role.entity.SysRoleMenu;
-import com.mes.userinfo.entity.SysUser;
import com.mes.utils.Result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import java.time.LocalDateTime;
import java.util.List;
/**
@@ -32,10 +26,6 @@
@RestController
@RequestMapping("/menu/sysMenu")
public class SysMenuController extends BaseController {
-
- @Autowired
- SysMenuService sysMenuService;
-
@ApiOperation("鑾峰彇鐢ㄦ埛鏈夋潈闄愮殑鎵�鏈夎彍鍗�")
@GetMapping("/list")
public Result<List<SysMenu>> getMenuTree(String userName) {
@@ -56,20 +46,21 @@
*/
@GetMapping("/nav")
public Result nav(String userName) {
- SysUser sysUser = sysUserService.getByUsername(userName);
-
- // 鑾峰彇鏉冮檺淇℃伅
- String authorityInfo = sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
- String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
-
- // 鑾峰彇瀵艰埅鏍忎俊鎭�
- List<SysMenuDto> navs = sysMenuService.getCurrentUserNav();
-
- return Result.success(MapUtil.builder()
- .put("authoritys", authorityInfoArray)
- .put("nav", navs)
- .map()
- );
+// SysUser sysUser = sysUserService.listByUserNameName(userName);
+//
+// // 鑾峰彇鏉冮檺淇℃伅
+// sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
+// String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
+//
+// // 鑾峰彇瀵艰埅鏍忎俊鎭�
+// List<SysMenuDto> navs = sysMenuService.getCurrentUserNav();
+//
+// return Result.success(MapUtil.builder()
+// .put("authoritys", authorityInfoArray)
+// .put("nav", navs)
+// .map()
+// );
+ return null;
}
@GetMapping("/info/{id}")
@@ -78,29 +69,23 @@
return Result.success(sysMenuService.getById(id));
}
- @GetMapping("/list")
- @PreAuthorize("hasAuthority('sys:menu:list')")
- public Result list() {
-
- List<SysMenu> menus = sysMenuService.tree();
- return Result.success(menus);
- }
+// @GetMapping("/list")
+// @PreAuthorize("hasAuthority('sys:menu:list')")
+// public Result list() {
+//
+//// List<SysMenu> menus = sysMenuService.tree();
+// return Result.success(null);
+// }
@PostMapping("/save")
@PreAuthorize("hasAuthority('sys:menu:save')")
public Result save(@Validated @RequestBody SysMenu sysMenu) {
-
- sysMenu.setCreated(LocalDateTime.now());
-
- sysMenuService.save(sysMenu);
- return Result.success(sysMenu);
+ return Result.success(sysMenuService.save(sysMenu));
}
@PostMapping("/update")
@PreAuthorize("hasAuthority('sys:menu:update')")
public Result update(@Validated @RequestBody SysMenu sysMenu) {
-
- sysMenu.setUpdated(LocalDateTime.now());
sysMenuService.updateById(sysMenu);
@@ -115,7 +100,7 @@
int count = sysMenuService.count(new QueryWrapper<SysMenu>().eq("parent_id", id));
if (count > 0) {
- return Result.fail("璇峰厛鍒犻櫎瀛愯彍鍗�");
+ return Result.error("璇峰厛鍒犻櫎瀛愯彍鍗�");
}
// 娓呴櫎鎵�鏈変笌璇ヨ彍鍗曠浉鍏崇殑鏉冮檺缂撳瓨
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
index 9ae6597..683ca4c 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/entity/SysMenu.java
@@ -30,7 +30,7 @@
* 鑷id
*/
@TableId(value = "id", type = IdType.AUTO)
- private Integer id;
+ private Long id;
/**
* 鐖秈d
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
index 1f8f34e..884b2ed 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/menu/service/impl/SysMenuServiceImpl.java
@@ -1,21 +1,17 @@
package com.mes.menu.service.impl;
import cn.hutool.json.JSONUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mes.menu.entity.SysMenu;
import com.mes.menu.mapper.SysMenuMapper;
import com.mes.menu.service.SysMenuService;
import com.mes.userinfo.entity.SysUser;
-import com.mes.userinfo.mapper.SysUserMapper;
import com.mes.userinfo.service.SysUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -43,11 +39,12 @@
@Override
public List<String> getAuthorityInfo(String userName) {
- SysUser sysUser = sysUserService.listByUserName(userName);
+ log.info("鑾峰彇鐢ㄦ埛淇℃伅锛岀敤鎴峰悕涓簕}", userName);
+ SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, userName));
// 鑾峰彇鏉冮檺淇℃伅
- String authorityInfo = sysUserService.getUserAuthorityInfo(sysUser.getId());// ROLE_admin,ROLE_normal,sys:user:list,....
- String[] authorityInfoArray = StringUtils.tokenizeToStringArray(authorityInfo, ",");
+ // ROLE_admin,ROLE_normal,sys:user:list,....
+ return sysUserService.getUserAuthorityInfo(sysUser.getId());
}
@@ -85,79 +82,79 @@
return res;
}
-
- @Autowired
- SysUserMapper sysUserMapper;
-
- @Override
- public List<SysMenuDto> getCurrentUserNav() {
- String username = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- SysUser sysUser = sysUserService.getByUsername(username);
-
- List<Long> menuIds = sysUserMapper.getNavMenuIds(sysUser.getId());
- List<SysMenu> menus = this.listByIds(menuIds);
-
- // 杞爲鐘剁粨鏋�
- List<SysMenu> menuTree = buildTreeMenu(menus);
-
- // 瀹炰綋杞珼TO
- return convert(menuTree);
- }
-
- @Override
- public List<SysMenu> tree() {
- // 鑾峰彇鎵�鏈夎彍鍗曚俊鎭�
- List<SysMenu> sysMenus = this.list(new QueryWrapper<SysMenu>().orderByAsc("orderNum"));
-
- // 杞垚鏍戠姸缁撴瀯
- return buildTreeMenu(sysMenus);
- }
-
- private List<SysMenuDto> convert(List<SysMenu> menuTree) {
- List<SysMenuDto> menuDtos = new ArrayList<>();
-
- menuTree.forEach(m -> {
- SysMenuDto dto = new SysMenuDto();
-
- dto.setId(m.getId());
- dto.setName(m.getPerms());
- dto.setTitle(m.getName());
- dto.setComponent(m.getComponent());
- dto.setPath(m.getPath());
-
- if (m.getChildren().size() > 0) {
-
- // 瀛愯妭鐐硅皟鐢ㄥ綋鍓嶆柟娉曡繘琛屽啀娆¤浆鎹�
- dto.setChildren(convert(m.getChildren()));
- }
-
- menuDtos.add(dto);
- });
-
- return menuDtos;
- }
-
- private List<SysMenu> buildTreeMenu(List<SysMenu> menus) {
-
- List<SysMenu> finalMenus = new ArrayList<>();
-
- // 鍏堝悇鑷鎵惧埌鍚勮嚜鐨勫瀛�
- for (SysMenu menu : menus) {
-
- for (SysMenu e : menus) {
- if (menu.getId() == e.getParentId()) {
- menu.getChildren().add(e);
- }
- }
-
- // 鎻愬彇鍑虹埗鑺傜偣
- if (menu.getParentId() == 0L) {
- finalMenus.add(menu);
- }
- }
-
- System.out.println(JSONUtil.toJsonStr(finalMenus));
- return finalMenus;
- }
+//
+// @Autowired
+// SysUserMapper sysUserMapper;
+//
+// @Override
+// public List<SysMenuDto> getCurrentUserNav() {
+// String username = (String) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+// SysUser sysUser = sysUserService.listByUserNameName(username);
+//
+// List<Long> menuIds = sysUserMapper.getNavMenuIds(sysUser.getId());
+// List<SysMenu> menus = this.listByIds(menuIds);
+//
+// // 杞爲鐘剁粨鏋�
+// List<SysMenu> menuTree = buildTreeMenu(menus);
+//
+// // 瀹炰綋杞珼TO
+// return convert(menuTree);
+// }
+//
+// @Override
+// public List<SysMenu> tree() {
+// // 鑾峰彇鎵�鏈夎彍鍗曚俊鎭�
+// List<SysMenu> sysMenus = this.list(new QueryWrapper<SysMenu>().orderByAsc("orderNum"));
+//
+// // 杞垚鏍戠姸缁撴瀯
+// return buildTreeMenu(sysMenus);
+// }
+//
+// private List<SysMenuDto> convert(List<SysMenu> menuTree) {
+// List<SysMenuDto> menuDtos = new ArrayList<>();
+//
+// menuTree.forEach(m -> {
+// SysMenuDto dto = new SysMenuDto();
+//
+// dto.setId(m.getId());
+// dto.setName(m.getPerms());
+// dto.setTitle(m.getName());
+// dto.setComponent(m.getComponent());
+// dto.setPath(m.getPath());
+//
+// if (m.getChildren().size() > 0) {
+//
+// // 瀛愯妭鐐硅皟鐢ㄥ綋鍓嶆柟娉曡繘琛屽啀娆¤浆鎹�
+// dto.setChildren(convert(m.getChildren()));
+// }
+//
+// menuDtos.add(dto);
+// });
+//
+// return menuDtos;
+// }
+//
+// private List<SysMenu> buildTreeMenu(List<SysMenu> menus) {
+//
+// List<SysMenu> finalMenus = new ArrayList<>();
+//
+// // 鍏堝悇鑷鎵惧埌鍚勮嚜鐨勫瀛�
+// for (SysMenu menu : menus) {
+//
+// for (SysMenu e : menus) {
+// if (menu.getId() == e.getParentId()) {
+// menu.getChildren().add(e);
+// }
+// }
+//
+// // 鎻愬彇鍑虹埗鑺傜偣
+// if (menu.getParentId() == 0L) {
+// finalMenus.add(menu);
+// }
+// }
+//
+// System.out.println(JSONUtil.toJsonStr(finalMenus));
+// return finalMenus;
+// }
}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
index 18ee6a6..8cb18bf 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleController.java
@@ -1,23 +1,9 @@
package com.mes.role.controller;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.mes.role.entity.SysRole;
-import com.mes.role.entity.SysRoleMenu;
-import com.mes.userinfo.entity.SysUserRole;
-import com.mes.utils.Result;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
+import com.mes.base.BaseController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
/**
* <p>
@@ -29,101 +15,6 @@
*/
@RestController
@RequestMapping("/role/sys-role")
-public class SysRoleController {
- @PreAuthorize("hasAuthority('sys:role:list')")
- @GetMapping("/info/{id}")
- public Result info(@PathVariable("id") Long id) {
-
- SysRole sysRole = sysRoleService.getById(id);
-
- // 鑾峰彇瑙掕壊鐩稿叧鑱旂殑鑿滃崟id
- List<SysRoleMenu> roleMenus = sysRoleMenuService.list(new QueryWrapper<SysRoleMenu>().eq("role_id", id));
- List<Long> menuIds = roleMenus.stream().map(p -> p.getMenuId()).collect(Collectors.toList());
-
- sysRole.setMenuIds(menuIds);
- return Result.success(sysRole);
- }
-
- @PreAuthorize("hasAuthority('sys:role:list')")
- @GetMapping("/list")
- public Result list(String name) {
-
- Page<SysRole> pageData = sysRoleService.page(getPage(),
- new QueryWrapper<SysRole>()
- .like(StrUtil.isNotBlank(name), "name", name)
- );
-
- return Result.success(pageData);
- }
-
- @PostMapping("/save")
- @PreAuthorize("hasAuthority('sys:role:save')")
- public Result save(@Validated @RequestBody SysRole sysRole) {
-
- sysRole.setCreated(LocalDateTime.now());
- sysRole.setStatu(Const.STATUS_ON);
-
- sysRoleService.save(sysRole);
- return Result.success(sysRole);
- }
-
- @PostMapping("/update")
- @PreAuthorize("hasAuthority('sys:role:update')")
- public Result update(@Validated @RequestBody SysRole sysRole) {
-
- sysRole.setUpdated(LocalDateTime.now());
-
- sysRoleService.updateById(sysRole);
-
- // 鏇存柊缂撳瓨
- sysUserService.clearUserAuthorityInfoByRoleId(sysRole.getId());
-
- return Result.success(sysRole);
- }
-
- @PostMapping("/delete")
- @PreAuthorize("hasAuthority('sys:role:delete')")
- @Transactional
- public Result info(@RequestBody Long[] ids) {
-
- sysRoleService.removeByIds(Arrays.asList(ids));
-
- // 鍒犻櫎涓棿琛�
- sysUserRoleService.remove(new QueryWrapper<SysUserRole>().in("role_id", ids));
- sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().in("role_id", ids));
-
- // 缂撳瓨鍚屾鍒犻櫎
- Arrays.stream(ids).forEach(id -> {
- // 鏇存柊缂撳瓨
- sysUserService.clearUserAuthorityInfoByRoleId(id);
- });
-
- return Result.success("");
- }
-
- @Transactional
- @PostMapping("/perm/{roleId}")
- @PreAuthorize("hasAuthority('sys:role:perm')")
- public Result info(@PathVariable("roleId") Long roleId, @RequestBody Long[] menuIds) {
-
- List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
-
- Arrays.stream(menuIds).forEach(menuId -> {
- SysRoleMenu roleMenu = new SysRoleMenu();
- roleMenu.setMenuId(menuId);
- roleMenu.setRoleId(roleId);
-
- sysRoleMenus.add(roleMenu);
- });
-
- // 鍏堝垹闄ゅ師鏉ョ殑璁板綍锛屽啀淇濆瓨鏂扮殑
- sysRoleMenuService.remove(new QueryWrapper<SysRoleMenu>().eq("role_id", roleId));
- sysRoleMenuService.saveBatch(sysRoleMenus);
-
- // 鍒犻櫎缂撳瓨
- sysUserService.clearUserAuthorityInfoByRoleId(roleId);
-
- return Result.success(menuIds);
- }
+public class SysRoleController extends BaseController {
}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
deleted file mode 100644
index 77b3175..0000000
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/role/controller/SysRoleMenuController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.role.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 鍓嶇鎺у埗鍣�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-11
- */
-@RestController
-@RequestMapping("/role/sys-role-menu")
-public class SysRoleMenuController {
-
-}
-
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
index 97e036f..d60a05f 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/entity/LoginUser.java
@@ -28,7 +28,7 @@
/**
* 瀛樺偍SpringSecurity璋冪敤getAuthorities()鏂规硶鑾峰彇鐨勬潈闄愪俊鎭殑闆嗗悎
*/
-// @JSONField(serialize = false)
+ @JSONField(serialize = false)
private List<GrantedAuthority> authorities;
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
index 419b4c7..87cc2cd 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/SysUserService.java
@@ -72,4 +72,14 @@
* @return
*/
String deleteUser(List<Long> ids);
+
+ /**
+ * 鑾峰彇鐢ㄦ埛瑙掕壊鏉冮檺淇℃伅
+ *
+ * @param userId
+ * @return
+ */
+ List<String> getUserAuthorityInfo(Long userId);
+
+ void clearUserAuthorityInfoByMenuId(Long userId);
}
diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
index 001b1fa..c674fea 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/userinfo/service/impl/SysUserServiceImpl.java
@@ -9,6 +9,7 @@
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;
@@ -35,6 +36,7 @@
import javax.annotation.Resource;
import java.util.*;
+import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -61,7 +63,10 @@
@Resource
private SysUserRoleService sysUserRoleService;
- @Autowired
+ @Resource
+ private SysRoleService sysRoleService;
+
+ @Resource
BCryptPasswordEncoder passwordEncoder;
@Override
@@ -74,12 +79,12 @@
//浣跨敤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);
//鎶妕oken鍝嶅簲缁欏墠绔�
HashMap<String, String> map = new HashMap<>();
map.put("token", jwt);
@@ -154,6 +159,42 @@
}
+ @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鎺ュ彛锛屼粠鏁版嵁搴撳唴鑾峰彇鐢ㄦ埛鍙婃潈闄愪俊鎭�
*
--
Gitblit v1.8.0