Commit baeb60fca9ac09a42f1dfa23779321af892e96a1

Authored by 王通
1 parent 3e684046

1.3月31日更新

src/main/java/com/bsth/filter/AuthorityFilter.java
1 -package com.bsth.filter;  
2 -  
3 -import com.bsth.common.Constants;  
4 -import com.bsth.common.ResponseCode;  
5 -import com.bsth.data.SystemParamCache;  
6 -import com.fasterxml.jackson.databind.ObjectMapper;  
7 -import org.slf4j.Logger;  
8 -import org.slf4j.LoggerFactory;  
9 -  
10 -import javax.servlet.*;  
11 -import javax.servlet.http.HttpServletRequest;  
12 -import javax.servlet.http.HttpServletResponse;  
13 -import java.io.IOException;  
14 -import java.util.HashMap;  
15 -import java.util.Map;  
16 -import java.util.Set;  
17 -  
18 -/**  
19 - * 权限过滤器  
20 - * @author Hill  
21 - */  
22 -public class AuthorityFilter extends BaseFilter {  
23 -  
24 - Logger logger = LoggerFactory.getLogger(this.getClass());  
25 -  
26 - private ObjectMapper mapper = new ObjectMapper();  
27 -  
28 - private final String rootUri = "/";  
29 -  
30 - private final String scheduleReferer = "/real_control/v2";  
31 -  
32 - private String[] pubUrls = new String[]{ "/sockjs/", "/pages/", "/error", "/dictionary/all", "/user/isWeakCipher", "/user/isRealName", "/user/currentUser", "/user/companyData", "/module/findByCurrentUser", "/eci/validate_get_destroy_info", "/business", "/personnel/all_py", "/companyAuthority/all", "/line/all", "/basic/refresh_person_data", "/downloadFile", "/report/lineList" };  
33 -  
34 - @Override  
35 - public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {  
36 - if (!SystemParamCache.getEnableFilterAuthority()) {  
37 - chain.doFilter(request, response);  
38 - return;  
39 - }  
40 -  
41 - String uri = request.getRequestURI(), referer = request.getHeader("Referer");  
42 - Set<String> links = (Set<String>) request.getSession().getAttribute(Constants.RESOURCE_AUTHORITYS);  
43 - if (rootUri.equals(uri) || (referer != null && referer.indexOf(scheduleReferer) > 0) || isPubURL(uri)) {  
44 - chain.doFilter(request, response);  
45 - return;  
46 - }  
47 - if (links != null) {  
48 - boolean matched = false;  
49 - for (String link : links) {  
50 - if (uri.startsWith(link)) {  
51 - matched = true;  
52 - break;  
53 - }  
54 - }  
55 - if (!matched) {  
56 - Map<String, Object> result = new HashMap<>();  
57 - result.put("status", ResponseCode.ERROR);  
58 - result.put("msg", "未授权的访问");  
59 - response.setContentType("text/html;charset=utf-8");  
60 - response.getWriter().write(mapper.writeValueAsString(result));  
61 - return;  
62 - }  
63 - }  
64 -  
65 - chain.doFilter(request, response);  
66 - }  
67 -  
68 - protected boolean isPubURL(String url) {  
69 - for (String pubUrl : pubUrls) {  
70 - if (url.startsWith(pubUrl)) {  
71 - return true;  
72 - }  
73 - }  
74 -  
75 - return false;  
76 - }  
77 -} 1 +package com.bsth.filter;
  2 +
  3 +import com.bsth.common.Constants;
  4 +import com.bsth.common.ResponseCode;
  5 +import com.bsth.data.SystemParamCache;
  6 +import com.fasterxml.jackson.databind.ObjectMapper;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +
  10 +import javax.servlet.*;
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +import java.io.IOException;
  14 +import java.util.HashMap;
  15 +import java.util.Map;
  16 +import java.util.Set;
  17 +
  18 +/**
  19 + * 权限过滤器
  20 + * @author Hill
  21 + */
  22 +public class AuthorityFilter extends BaseFilter {
  23 +
  24 + Logger logger = LoggerFactory.getLogger(this.getClass());
  25 +
  26 + private ObjectMapper mapper = new ObjectMapper();
  27 +
  28 + private final String rootUri = "/";
  29 +
  30 + private final String scheduleReferer = "/real_control/v2";
  31 +
  32 + private String[] pubUrls = new String[]{ "/sockjs/", "/pages/", "/error", "/dictionary/all", "/user/isWeakCipher", "/user/isRealName", "/user/currentUser", "/user/companyData", "/module/findByCurrentUser", "/eci/validate_get_destroy_info", "/business", "/personnel/all_py", "/companyAuthority/all", "/line/all", "/basic/refresh_person_data", "/downloadFile", "/report/lineList", "/adminUtils", "/metronic_v4.5.4", "/assets" };
  33 +
  34 + @Override
  35 + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
  36 + if (!SystemParamCache.getEnableFilterAuthority()) {
  37 + chain.doFilter(request, response);
  38 + return;
  39 + }
  40 +
  41 + String uri = request.getRequestURI(), referer = request.getHeader("Referer");
  42 + Set<String> links = (Set<String>) request.getSession().getAttribute(Constants.RESOURCE_AUTHORITYS);
  43 + if (rootUri.equals(uri) || (referer != null && referer.indexOf(scheduleReferer) > 0) || isPubURL(uri)) {
  44 + chain.doFilter(request, response);
  45 + return;
  46 + }
  47 + if (links != null) {
  48 + boolean matched = false;
  49 + for (String link : links) {
  50 + if (uri.startsWith(link)) {
  51 + matched = true;
  52 + break;
  53 + }
  54 + }
  55 + if (!matched) {
  56 + Map<String, Object> result = new HashMap<>();
  57 + result.put("status", ResponseCode.ERROR);
  58 + result.put("msg", "未授权的访问");
  59 + response.setContentType("text/html;charset=utf-8");
  60 + response.getWriter().write(mapper.writeValueAsString(result));
  61 + return;
  62 + }
  63 + }
  64 +
  65 + chain.doFilter(request, response);
  66 + }
  67 +
  68 + protected boolean isPubURL(String url) {
  69 + for (String pubUrl : pubUrls) {
  70 + if (url.startsWith(pubUrl)) {
  71 + return true;
  72 + }
  73 + }
  74 +
  75 + return false;
  76 + }
  77 +}