From e25d138ac2e1a2b271b27bbc1973f0b5898b1d82 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 15 八月 2025 15:05:11 +0800 Subject: [PATCH] 修改bug --- ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 29 +++++++++++++++++------------ 1 files changed, 17 insertions(+), 12 deletions(-) diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java index dc9ed70..3799d2c 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java @@ -2,9 +2,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.google.code.kaptcha.Constants; import com.stylefeng.guns.core.base.controller.BaseController; -import com.stylefeng.guns.core.beetl.ShiroExtUtil; import com.stylefeng.guns.core.common.exception.InvalidKaptchaException; import com.stylefeng.guns.core.log.LogManager; import com.stylefeng.guns.core.log.factory.LogTaskFactory; @@ -16,8 +16,11 @@ import com.stylefeng.guns.core.util.KaptchaUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.dao.UserMapper; +import com.stylefeng.guns.modular.system.model.Menu; +import com.stylefeng.guns.modular.system.model.Relation; import com.stylefeng.guns.modular.system.model.User; import com.stylefeng.guns.modular.system.service.IMenuService; +import com.stylefeng.guns.modular.system.service.IRelationService; import com.stylefeng.guns.modular.system.service.IUserService; import com.stylefeng.guns.modular.system.util.HttpRequestUtil; import com.stylefeng.guns.modular.system.util.PushURL; @@ -34,7 +37,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.context.request.RequestContextHolder; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -43,6 +45,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static com.stylefeng.guns.core.support.HttpKit.getIp; @@ -64,7 +68,7 @@ private IUserService userService; @Resource - private RedisTemplate<String, Object> redisTemplate; + private RedisTemplate<String, String> redisTemplate; @Autowired private IShiro shiro; @@ -77,6 +81,9 @@ private Map<String, Integer> loginFailures = new HashMap<>(); + @Autowired + private IRelationService relationService; + /** * 跳转到主页 @@ -88,12 +95,11 @@ String onconParam = edu.yale.its.tp.cas.client.Util.getOnconParam(session); onconParam = new String(Base64.decodeBase64(onconParam), "UTF-8"); LoginUser loginUser = JSON.parseObject(onconParam, LoginUser.class); - log.info("登录账号: " + JSON.toJSONString(loginUser)); - + log.info("session解析结果:" + JSON.toJSONString(loginUser)); //获取菜单列表 User user = userMapper.getByAccount(loginUser.getImUser()); if (null == user) { - logOut(request); + log.info("用户不存在"); return null; } ShiroUser shiroUser = shiro.shiroUser(user); @@ -101,11 +107,13 @@ if (roleList == null || roleList.size() == 0) { roleList.add(0); } - + List<Relation> relations = relationService.selectList(new EntityWrapper<Relation>().in("roleid", roleList)); + Set<Long> collect = relations.stream().map(Relation::getMenuid).collect(Collectors.toSet()); + List<Menu> menuList = menuService.selectBatchIds(collect); List<MenuNode> menus = menuService.getMenusByRoleIds(roleList); List<MenuNode> titles = MenuNode.buildTitle(menus); titles = ApiMenuFilter.build(titles); - shiroUser.setMenuIds(titles.stream().map(MenuNode::getUrl).collect(Collectors.toList())); + shiroUser.setMenuIds(menuList.stream().map(Menu::getUrl).collect(Collectors.toList())); model.addAttribute("titles", titles); @@ -114,8 +122,7 @@ model.addAttribute("avatar", avatar); model.addAttribute("userName", user.getName()); model.addAttribute("type", 0); - String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId(); - ShiroExtUtil.map.put(sessionId, shiroUser); + redisTemplate.opsForValue().set(loginUser.getOnconUUID(), JSON.toJSONString(shiroUser), 10, TimeUnit.HOURS); return "/index.html"; } @@ -124,8 +131,6 @@ */ @RequestMapping(value = "/logout", method = RequestMethod.GET) public String logOut(HttpServletRequest request) { - request.getSession().invalidate(); -// HttpUtil.get("https://testsso1.teamshub.com/logout?logouturl=https%3A%2F%2Fsso.teamshub.com%2Flogout%3Flogoutat%3Dhttps%3A%2F%2Ftraffic.qytzt.cn%2F"); return REDIRECT + "/"; } -- Gitblit v1.7.1