From 6ab86e6adfb5474120572c26ae5aa8a6bddb1e1a Mon Sep 17 00:00:00 2001 From: RuoYi Date: Mon, 2 Jul 2018 21:35:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8B=A5=E4=BE=9D=202.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/common/utils/ServletUtils.java | 58 +++++++++++++++++-- .../user/controller/LoginController.java | 12 +++- 2 files changed, 64 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/ruoyi/common/utils/ServletUtils.java b/src/main/java/com/ruoyi/common/utils/ServletUtils.java index c00abc37..f4b96af4 100644 --- a/src/main/java/com/ruoyi/common/utils/ServletUtils.java +++ b/src/main/java/com/ruoyi/common/utils/ServletUtils.java @@ -1,5 +1,6 @@ package com.ruoyi.common.utils; +import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -78,12 +79,59 @@ public class ServletUtils } /** - * 是否ajax + * 将字符串渲染到客户端 + * + * @param response 渲染对象 + * @param string 待渲染的字符串 + * @return null */ - public boolean isAjax() + public static String renderString(HttpServletResponse response, String string) { - String header = getRequest().getHeader("X-Requested-With"); - boolean isAjax = "XMLHttpRequest".equalsIgnoreCase(header); - return isAjax; + try + { + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + response.getWriter().print(string); + } + catch (IOException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * 是否是Ajax异步请求 + * + * @param request + */ + public static boolean isAjaxRequest(HttpServletRequest request) + { + + String accept = request.getHeader("accept"); + if (accept != null && accept.indexOf("application/json") != -1) + { + return true; + } + + String xRequestedWith = request.getHeader("X-Requested-With"); + if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) + { + return true; + } + + String uri = request.getRequestURI(); + if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) + { + return true; + } + + String ajax = request.getParameter("__ajax"); + if (StringUtils.inStringIgnoreCase(ajax, "json", "xml")) + { + return true; + } + + return false; } } diff --git a/src/main/java/com/ruoyi/project/system/user/controller/LoginController.java b/src/main/java/com/ruoyi/project/system/user/controller/LoginController.java index 7a7a25cd..8b338cf7 100644 --- a/src/main/java/com/ruoyi/project/system/user/controller/LoginController.java +++ b/src/main/java/com/ruoyi/project/system/user/controller/LoginController.java @@ -1,13 +1,17 @@ package com.ruoyi.project.system.user.controller; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.ResponseBody; +import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; @@ -22,8 +26,14 @@ public class LoginController extends BaseController { @GetMapping("/login") - public String login() + public String login(HttpServletRequest request, HttpServletResponse response, Model model) { + // 如果是Ajax请求,返回Json字符串。 + if (ServletUtils.isAjaxRequest((HttpServletRequest) request)) + { + return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"); + } + return "login"; }