From 55c79d4c0e3b07e9b7b28d3a3f424decec06d498 Mon Sep 17 00:00:00 2001
From: 曾富康 <1067864236@qq.com>
Date: 星期五, 26 六月 2026 14:46:53 +0800
Subject: [PATCH] 新增需求
---
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 52 insertions(+), 2 deletions(-)
diff --git a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
index 64b9ef1..dc7a76d 100644
--- a/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
+++ b/ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginController.java
@@ -2,6 +2,7 @@
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.common.exception.InvalidKaptchaException;
@@ -13,11 +14,13 @@
import com.stylefeng.guns.core.shiro.ShiroUser;
import com.stylefeng.guns.core.shiro.factory.IShiro;
import com.stylefeng.guns.core.util.ApiMenuFilter;
+import com.stylefeng.guns.core.util.JwtTokenUtil;
import com.stylefeng.guns.core.util.KaptchaUtil;
import com.stylefeng.guns.core.util.SinataUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.system.dao.TCompanyMapper;
import com.stylefeng.guns.modular.system.dao.UserMapper;
+import com.stylefeng.guns.modular.system.model.Menu;
import com.stylefeng.guns.modular.system.model.SysUserCompanyScope;
import com.stylefeng.guns.modular.system.model.TCompany;
import com.stylefeng.guns.modular.system.model.User;
@@ -32,6 +35,7 @@
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@@ -41,6 +45,7 @@
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
import java.util.*;
import static com.stylefeng.guns.core.support.HttpKit.getIp;
@@ -54,6 +59,10 @@
@Slf4j
@Controller
public class LoginController extends BaseController {
+
+ @Value("${embedded.route-switch-url}")
+ private String routeSwitchUrl;
+
// 快车相关菜单(isSpe=2时过滤)
private static final List<String> SPE_MENUS = Arrays.asList(
@@ -110,7 +119,7 @@
* 跳转到主页
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
- public String index(Model model) throws UnsupportedEncodingException {
+ public String index(Model model, String routeRedirect) throws UnsupportedEncodingException {
ShiroUser shiroUser = ShiroKit.getUser();
if (Objects.isNull(shiroUser)) {
ShiroKit.getSubject().logout();
@@ -154,9 +163,37 @@
model.addAttribute("avatar", avatar);
model.addAttribute("userName", user.getName());
model.addAttribute("type", 0);
+ addDefaultPageModel(model, routeRedirect);
return "/index.html";
+ }
+
+ private void addDefaultPageModel(Model model, String routeRedirect) {
+ String defaultPageUrl = getValidRouteRedirect(routeRedirect);
+ String defaultPageTitle = "首页";
+ if (!"/blackboard".equals(defaultPageUrl)) {
+ Menu menu = menuService.selectOne(
+ new EntityWrapper<Menu>().eq("url", defaultPageUrl).eq("status", 1).eq("ismenu", 1));
+ if (menu != null && ToolUtil.isNotEmpty(menu.getName())) {
+ defaultPageTitle = menu.getName();
+ }
+ }
+ model.addAttribute("defaultPageUrl", defaultPageUrl);
+ model.addAttribute("defaultPageTitle", defaultPageTitle);
+ }
+
+ private String getValidRouteRedirect(String routeRedirect) {
+ if (ToolUtil.isEmpty(routeRedirect)) {
+ return "/blackboard";
+ }
+ String url = routeRedirect.trim();
+ String lowerUrl = url.toLowerCase();
+ if (!url.startsWith("/") || url.startsWith("//")
+ || lowerUrl.contains("http:") || lowerUrl.contains("https:") || lowerUrl.contains("javascript:")) {
+ return "/blackboard";
+ }
+ return url;
}
/**
@@ -252,7 +289,20 @@
ShiroKit.getSession().setAttribute("sessionFlag", true);
- return REDIRECT + "/";
+ return redirectToRouteSwitchPage(shiroUser);
+ }
+
+ private String redirectToRouteSwitchPage(ShiroUser shiroUser) {
+ if (shiroUser == null || shiroUser.getId() == null) {
+ return REDIRECT + "/";
+ }
+ try {
+ String token = JwtTokenUtil.generateToken(shiroUser.getId().toString());
+ return REDIRECT + routeSwitchUrl + URLEncoder.encode(token, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ log.error("生成路由切换页token失败", e);
+ return REDIRECT + "/";
+ }
}
@ResponseBody
--
Gitblit v1.7.1