shikeyin
2024-01-11 65da8373531677b1c37a98f53eaa30c892f35e5a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.iplatform.base.support;
 
import com.iplatform.base.VariableConstants;
import com.iplatform.base.util.TokenUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.web.TokenException;
import com.walker.web.TokenGenerator;
import com.walker.web.interceptor.WebOperationInterceptor;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * 平台基本操作拦截器,主要针对界面操作。
 * @author 时克英
 * @date 2023-03-09
 */
public class PlatformOperationInterceptor extends WebOperationInterceptor {
 
    @Override
    protected boolean doPreHandleOther(String servletPath, HttpServletRequest request, HttpServletResponse response){
        return this.checkReportView4Jim(servletPath, request);
    }
 
    private boolean checkReportView4Jim(String servletPath, HttpServletRequest request){
        if(servletPath.indexOf(REPORT_VIEW_JIM) >= 0){
            // 获取token验证
            String token = TokenUtils.getAuthorizationToken(request, REPORT_TOKEN_NAME);
            if(StringUtils.isEmpty(token)){
                logger.debug("-----> token 为空");
                return false;
            }
            String data = null;
            try {
                data = tokenGenerator.validateToken(token, VariableConstants.TOKEN_SECRET);
                String[] userIdAndKey = TokenUtils.getUserIdAndKey(data);
                String loginId = userIdAndKey[1];
                return true;
 
            } catch (TokenException e) {
                logger.error("查看报表token验证错误:" + e.getMessage(), e);
                return false;
            }
        }
        return true;
    }
 
    public void setTokenGenerator(TokenGenerator tokenGenerator) {
        this.tokenGenerator = tokenGenerator;
    }
 
    private TokenGenerator tokenGenerator;
    private static final String REPORT_VIEW_JIM = "/jmreport/view/";
    private static final String REPORT_TOKEN_NAME = "token";
}