|
@@ -10,6 +10,7 @@ import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
|
|
|
|
+import javax.servlet.ServletOutputStream;
|
|
import javax.servlet.ServletRequest;
|
|
import javax.servlet.ServletRequest;
|
|
import javax.servlet.ServletResponse;
|
|
import javax.servlet.ServletResponse;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -29,6 +30,8 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|
/**
|
|
/**
|
|
* 判断用户是否想要登入。
|
|
* 判断用户是否想要登入。
|
|
* 检测header里面是否包含Authorization字段即可
|
|
* 检测header里面是否包含Authorization字段即可
|
|
|
|
+ *
|
|
|
|
+ * return false:直接不校验就可以访问api
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) {
|
|
protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) {
|
|
@@ -50,7 +53,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|
// this.writeResponse(response, jsonObject);
|
|
// this.writeResponse(response, jsonObject);
|
|
|
|
|
|
// 直接返回false, ExceptionController的ShiroException.class是能捕捉到5003那个异常的
|
|
// 直接返回false, ExceptionController的ShiroException.class是能捕捉到5003那个异常的
|
|
- return false;
|
|
|
|
|
|
+// return false;
|
|
}
|
|
}
|
|
|
|
|
|
return true;
|
|
return true;
|
|
@@ -113,7 +116,7 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|
}
|
|
}
|
|
// 直接返回Response信息
|
|
// 直接返回Response信息
|
|
this.writeResponse(response, jsonObject);
|
|
this.writeResponse(response, jsonObject);
|
|
- return false;
|
|
|
|
|
|
+// return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// return false 前端没有响应,接收不到异常
|
|
// return false 前端没有响应,接收不到异常
|
|
@@ -140,17 +143,6 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|
return super.preHandle(request, response);
|
|
return super.preHandle(request, response);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 将非法请求跳转到 /401
|
|
|
|
- */
|
|
|
|
-// private void response401(ServletRequest req, ServletResponse resp) {
|
|
|
|
-// try {
|
|
|
|
-// HttpServletResponse httpServletResponse = (HttpServletResponse) resp;
|
|
|
|
-// httpServletResponse.sendRedirect("/401");
|
|
|
|
-// } catch (IOException e) {
|
|
|
|
-// log.error(e.getMessage());
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* 无需转发,直接返回Response信息
|
|
* 无需转发,直接返回Response信息
|
|
@@ -159,18 +151,17 @@ public class JWTFilter extends BasicHttpAuthenticationFilter {
|
|
private void writeResponse(ServletResponse response, JSONObject msg) {
|
|
private void writeResponse(ServletResponse response, JSONObject msg) {
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setCharacterEncoding("UTF-8");
|
|
response.setContentType("application/json; charset=utf-8");
|
|
response.setContentType("application/json; charset=utf-8");
|
|
- PrintWriter out = null;
|
|
|
|
|
|
+ ServletOutputStream outputStream = null;
|
|
try {
|
|
try {
|
|
- out = response.getWriter();
|
|
|
|
- out.append(msg.toString());
|
|
|
|
- out.flush();
|
|
|
|
- out.close();
|
|
|
|
|
|
+ outputStream = response.getOutputStream();
|
|
} catch (IOException e) {
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
- } finally {
|
|
|
|
- if (out != null){
|
|
|
|
- out.close();
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
+ assert outputStream != null;
|
|
|
|
+ PrintWriter printWriter = new PrintWriter(outputStream, true);
|
|
|
|
+ printWriter.write(msg.toString());//直接将json输出到页面
|
|
|
|
+ printWriter.flush();
|
|
|
|
+ printWriter.close();
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|