Browse Source

若依 2.0

RuoYi 6 years ago
parent
commit
848a0a813f

+ 53 - 5
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;
     }
 }

+ 11 - 1
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";
     }