|
@@ -2,6 +2,9 @@ package cn.com.ctop.okr.shiro.authc.aop;
|
|
|
|
|
|
import cn.com.ctop.okr.shiro.authc.JwtToken;
|
|
|
import cn.com.ctop.okr.shiro.vo.DefContants;
|
|
|
+import cn.com.ctop.okr.shiro.vo.JsonResponse;
|
|
|
+import cn.com.ctop.okr.shiro.vo.ResponseBean;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
|
|
|
import org.springframework.http.HttpStatus;
|
|
@@ -11,6 +14,8 @@ import javax.servlet.ServletRequest;
|
|
|
import javax.servlet.ServletResponse;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.PrintWriter;
|
|
|
|
|
|
/**
|
|
|
* @Description: 鉴权登录拦截器
|
|
@@ -30,7 +35,8 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
|
|
|
*/
|
|
|
@Override
|
|
|
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
|
|
|
-
|
|
|
+ HttpServletRequest req = (HttpServletRequest) request;
|
|
|
+ HttpServletResponse resp = (HttpServletResponse) response;
|
|
|
boolean successful = false;
|
|
|
try {
|
|
|
successful = executeLogin(request, response);
|
|
@@ -46,7 +52,6 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
|
|
|
*/
|
|
|
@Override
|
|
|
protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
|
|
|
-
|
|
|
try {
|
|
|
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
|
|
|
String token = httpServletRequest.getHeader(DefContants.X_ACCESS_TOKEN);
|
|
@@ -56,10 +61,10 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
|
|
|
// 如果没有抛出异常则代表登入成功,返回true
|
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -79,4 +84,39 @@ public class JwtFilter extends BasicHttpAuthenticationFilter {
|
|
|
}
|
|
|
return super.preHandle(request, response);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
|
|
|
+ JsonResponse<Void> res = JsonResponse.noLogin("请先登录");
|
|
|
+
|
|
|
+ //resp.sendRedirect("http://localhost:3000/login");
|
|
|
+ //response.sendRedirect(state + "?code=" + code);
|
|
|
+ //((HttpServletResponse) response).setContentType("application/json; charset=utf-8");
|
|
|
+ // ResponseBean bean = new ResponseBean(500,"Token失效,请重新登录!",null);
|
|
|
+ //返回json
|
|
|
+ //((HttpServletResponse) response).getOutputStream().print("error");
|
|
|
+
|
|
|
+ out((HttpServletResponse) response, res);
|
|
|
+
|
|
|
+ return Boolean.FALSE ;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void out(HttpServletResponse response, JsonResponse jsonObj){
|
|
|
+ PrintWriter out = null;
|
|
|
+ try {
|
|
|
+ response.setStatus(500);
|
|
|
+ response.setCharacterEncoding("UTF-8");
|
|
|
+ response.setContentType("application/json; charset=utf-8");
|
|
|
+ out = response.getWriter();
|
|
|
+ out.write(JSON.toJSONString(jsonObj));
|
|
|
+ //response.sendRedirect("192.168.1.94:3000/login");
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ if (out != null) {
|
|
|
+ out.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|