diff --git a/pmhub-base/pmhub-base-security/src/main/java/com/laigeoffer/pmhub/base/security/interceptor/HeaderInterceptor.java b/pmhub-base/pmhub-base-security/src/main/java/com/laigeoffer/pmhub/base/security/interceptor/HeaderInterceptor.java index 332b5a69..3d5e9ce3 100644 --- a/pmhub-base/pmhub-base-security/src/main/java/com/laigeoffer/pmhub/base/security/interceptor/HeaderInterceptor.java +++ b/pmhub-base/pmhub-base-security/src/main/java/com/laigeoffer/pmhub/base/security/interceptor/HeaderInterceptor.java @@ -1,7 +1,9 @@ package com.laigeoffer.pmhub.base.security.interceptor; +import com.laigeoffer.pmhub.base.core.constant.Constants; import com.laigeoffer.pmhub.base.core.constant.SecurityConstants; import com.laigeoffer.pmhub.base.core.context.SecurityContextHolder; +import com.laigeoffer.pmhub.base.core.core.domain.entity.SysUser; import com.laigeoffer.pmhub.base.core.core.domain.model.LoginUser; import com.laigeoffer.pmhub.base.core.utils.ServletUtils; import com.laigeoffer.pmhub.base.core.utils.StringUtils; @@ -12,6 +14,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.HashSet; +import java.util.Set; /** * 自定义请求头拦截器,将Header数据封装到线程变量中方便获取 @@ -19,13 +23,25 @@ * * @author canghe */ -public class HeaderInterceptor implements AsyncHandlerInterceptor -{ +public class HeaderInterceptor implements AsyncHandlerInterceptor { + + // 需要免登录的路径集合 + private static final Set EXEMPTED_PATHS = new HashSet<>(); + + static { + // 在这里添加所有需要免登录默认展示首页的的路径 + EXEMPTED_PATHS.add("/system/user/getInfo"); + EXEMPTED_PATHS.add("/project/statistics"); + EXEMPTED_PATHS.add("/project/doing"); + EXEMPTED_PATHS.add("/project/queryMyTaskList"); + EXEMPTED_PATHS.add("/project/select"); + EXEMPTED_PATHS.add("/system/menu/getRouters"); + + } + @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception - { - if (!(handler instanceof HandlerMethod)) - { + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if (!(handler instanceof HandlerMethod)) { return true; } @@ -34,22 +50,51 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons SecurityContextHolder.setUserKey(ServletUtils.getHeader(request, SecurityConstants.USER_KEY)); String token = SecurityUtils.getToken(); - if (StringUtils.isNotEmpty(token)) - { + if (StringUtils.isNotEmpty(token)) { LoginUser loginUser = AuthUtil.getLoginUser(token); - if (StringUtils.isNotNull(loginUser)) - { + if (StringUtils.isNotNull(loginUser)) { AuthUtil.verifyLoginUserExpire(loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); } + } else { + // 首页免登场景展示 + // 检查请求路径是否匹配特定路径 + String requestURI = request.getRequestURI(); + if (isExemptedPath(requestURI)) { + // 创建一个默认的 LoginUser 对象 + LoginUser defaultLoginUser = createDefaultLoginUser(); + SecurityContextHolder.set(SecurityConstants.LOGIN_USER, defaultLoginUser); + } } return true; } + // 判断请求路径是否匹配特定路径 + private boolean isExemptedPath(String requestURI) { + // 你可以根据需要调整特定路径的匹配逻辑 + return EXEMPTED_PATHS.stream().anyMatch(requestURI::startsWith); + } + + // 创建一个默认的 LoginUser 对象 + private LoginUser createDefaultLoginUser() { + LoginUser defaultLoginUser = new LoginUser(); + defaultLoginUser.setUserId(173L); // 设置默认的用户ID + defaultLoginUser.setUsername(Constants.DEMO_ACCOUNT); // 设置默认的用户名 + + SysUser demoSysUser = new SysUser(); + demoSysUser.setUserId(173L); + demoSysUser.setUserName(Constants.DEMO_ACCOUNT); + demoSysUser.setDeptId(100L); + demoSysUser.setStatus("0"); + + defaultLoginUser.setUser(demoSysUser); + // 设置其他必要的默认属性 + return defaultLoginUser; + } + @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) - throws Exception - { + throws Exception { SecurityContextHolder.remove(); } } diff --git a/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectServiceImpl.java b/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectServiceImpl.java index 8dcfb3c1..67d0c891 100644 --- a/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectServiceImpl.java +++ b/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectServiceImpl.java @@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.laigeoffer.pmhub.base.core.constant.Constants; import com.laigeoffer.pmhub.base.core.core.domain.entity.SysUser; import com.laigeoffer.pmhub.base.core.core.domain.model.LoginUser; import com.laigeoffer.pmhub.base.core.enums.LogTypeEnum; @@ -62,14 +61,6 @@ public class ProjectServiceImpl extends ServiceImpl impl public List queryProjectRankList() { List projectRankVOList = new ArrayList<>(10); LoginUser loginUser = SecurityUtils.getLoginUser(); - // 对于免登场景 - if (Objects.isNull(loginUser)) { - loginUser = new LoginUser(); - loginUser.setUsername(Constants.DEMO_ACCOUNT); - SysUser sysUser = new SysUser(); - sysUser.setNickName(Constants.DEMO_ACCOUNT); - loginUser.setUser(sysUser); - } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Project::getDeleted, 0); List list = projectMapper.selectList(queryWrapper); @@ -79,14 +70,13 @@ public List queryProjectRankList() { // 对项目进度降序 List collect = list.stream().sorted(Comparator.comparing(Project::getProjectProcess).reversed()) .collect(Collectors.toList()); - LoginUser finalLoginUser = loginUser; collect.forEach(project -> { ProjectRankVO projectRankVO = new ProjectRankVO(); projectRankVO.setProjectId(project.getId()); projectRankVO.setProjectName(project.getProjectName()); projectRankVO.setProcess(project.getProjectProcess()); - projectRankVO.setUserName(finalLoginUser.getUsername()); - projectRankVO.setNickName(finalLoginUser.getUser().getNickName()); + projectRankVO.setUserName(loginUser.getUsername()); + projectRankVO.setNickName(loginUser.getUser().getNickName()); projectRankVOList.add(projectRankVO); }); return projectRankVOList; @@ -94,10 +84,6 @@ public List queryProjectRankList() { @Override public List queryMyProjectList() { - // 对于免登场景 - if (Objects.isNull(SecurityUtils.getLoginUser())) { - return new ArrayList<>(); - } List projects = projectMapper.queryMyProjectList(SecurityUtils.getUserId()); projects.forEach( project -> { project.setStatusName(ProjectStatusEnum.getStatusNameByStatus(project.getStatus())); diff --git a/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectTaskServiceImpl.java b/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectTaskServiceImpl.java index b2bccf63..74376221 100644 --- a/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectTaskServiceImpl.java +++ b/pmhub-modules/pmhub-project/src/main/java/com/laigeoffer/pmhub/project/service/impl/ProjectTaskServiceImpl.java @@ -136,10 +136,6 @@ public List queryTaskStatisticsList() { @Override public PageInfo queryMyTaskList(TaskReqVO taskReqVO) { - // 免登录场景 - if (com.laigeoffer.pmhub.base.core.utils.StringUtils.isNull(SecurityUtils.getLoginUser())) { - return new PageInfo<>(); - } PageInfo pageInfo; PageHelper.startPage(taskReqVO.getPageNum(), taskReqVO.getPageSize()); switch (taskReqVO.getType()) { diff --git a/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysMenuController.java b/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysMenuController.java index 8d04daa6..54aee834 100644 --- a/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysMenuController.java +++ b/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysMenuController.java @@ -1,12 +1,10 @@ package com.laigeoffer.pmhub.system.controller; import com.laigeoffer.pmhub.base.core.annotation.Log; -import com.laigeoffer.pmhub.base.core.constant.Constants; import com.laigeoffer.pmhub.base.core.constant.UserConstants; import com.laigeoffer.pmhub.base.core.core.controller.BaseController; import com.laigeoffer.pmhub.base.core.core.domain.AjaxResult; import com.laigeoffer.pmhub.base.core.core.domain.entity.SysMenu; -import com.laigeoffer.pmhub.base.core.core.domain.entity.SysUser; import com.laigeoffer.pmhub.base.core.core.domain.model.LoginUser; import com.laigeoffer.pmhub.base.core.enums.BusinessType; import com.laigeoffer.pmhub.base.core.utils.StringUtils; @@ -135,14 +133,6 @@ public AjaxResult remove(@PathVariable("menuId") Long menuId) { @GetMapping("getRouters") public AjaxResult getRouters() { LoginUser loginUser = SecurityUtils.getLoginUser(); - // 默认免登录场景下 - if (StringUtils.isNull(loginUser)) { - // 根据用户名查出体验账号 - SysUser DemoSysUser = userService.selectUserByUserName(Constants.DEMO_ACCOUNT); - loginUser = new LoginUser(); - loginUser.setUserId(DemoSysUser.getUserId()); - loginUser.setUser(DemoSysUser); - } Long userId = loginUser.getUserId(); List menus = menuService.selectMenuTreeByUserId(userId); return success(menuService.buildMenus(menus)); diff --git a/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysUserController.java b/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysUserController.java index e49ee5a2..861c97fe 100644 --- a/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysUserController.java +++ b/pmhub-modules/pmhub-system/src/main/java/com/laigeoffer/pmhub/system/controller/SysUserController.java @@ -1,7 +1,6 @@ package com.laigeoffer.pmhub.system.controller; import com.laigeoffer.pmhub.base.core.annotation.Log; -import com.laigeoffer.pmhub.base.core.constant.Constants; import com.laigeoffer.pmhub.base.core.constant.UserConstants; import com.laigeoffer.pmhub.base.core.core.controller.BaseController; import com.laigeoffer.pmhub.base.core.core.domain.AjaxResult; @@ -139,12 +138,6 @@ public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long @GetMapping("/getInfo") public AjaxResult getInfo() { LoginUser loginUser = SecurityUtils.getLoginUser(); - if (StringUtils.isNull(loginUser)) { - // 根据用户名查出体验账号 - SysUser DemoSysUser = userService.selectUserByUserName(Constants.DEMO_ACCOUNT); - loginUser = new LoginUser(); - loginUser.setUser(DemoSysUser); - } SysUser user = loginUser.getUser(); // 角色集合 Set roles = permissionService.getRolePermission(user); diff --git a/pmhub-ui/src/api/login.js b/pmhub-ui/src/api/login.js index 834eab9a..6d722266 100644 --- a/pmhub-ui/src/api/login.js +++ b/pmhub-ui/src/api/login.js @@ -34,9 +34,6 @@ export function register(data) { export function getInfo() { return request({ url: '/system/user/getInfo', - headers: { - isToken: false - }, method: 'get' }) }