Jay
2024-10-16 a40221c883c632630b4876ad846e08c0da8af388
提交 | 用户 | 时间
a6de49 1 package com.iailab.module.data.api.utils;
H 2
3
4 import com.iailab.framework.common.constant.Constant;
5 import com.iailab.framework.common.pojo.CommonResult;
6 import com.iailab.framework.security.core.LoginUser;
7 import com.iailab.framework.security.core.util.SecurityFrameworkUtils;
8 import com.iailab.module.system.api.user.AdminUserApi;
9 import com.iailab.module.system.api.user.dto.AdminUserRespDTO;
10 import org.apache.commons.lang3.StringUtils;
11 import javax.annotation.Resource;
12 import org.springframework.stereotype.Component;
13 import org.springframework.util.ObjectUtils;
14
15 import javax.servlet.http.HttpServletRequest;
16 import java.util.regex.Pattern;
17
18 /**
19  * @author PanZhibao
20  * @Description
21  * @createTime 2023年12月06日 15:55:00
22  */
23 @Component
24 public class ApiSecurityUtils {
25
0866d8 26     /*@Resource
27     private ApiAppService apiAppService;*/
a6de49 28
H 29     @Resource
30     private AdminUserApi adminUserApi;
31
32     private Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
33
34     private String getRequestToken(HttpServletRequest httpRequest) {
35         //从header中获取token
36         String token = httpRequest.getHeader(Constant.TOKEN_HEADER);
37
38         //如果header中不存在token,则从参数中获取token
39         if (StringUtils.isBlank(token)) {
40             token = httpRequest.getParameter(Constant.TOKEN_HEADER);
41         }
42
43         return token;
44     }
45
46
47     public void validate(HttpServletRequest httpRequest) throws Exception {
48         String token = getRequestToken(httpRequest);
49         if (StringUtils.isBlank(token)) {
50             throw new Exception("token 不能为空!");
51         }
52         LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
53         if (ObjectUtils.isEmpty(loginUser)) {
54             throw new RuntimeException("用户不能为空");
55         }
56         CommonResult<AdminUserRespDTO> user = adminUserApi.getUser(loginUser.getId());
57         if(ObjectUtils.isEmpty(user)) {
58             throw new RuntimeException("用户不存在");
59         }
60         AdminUserRespDTO userData = user.getData();
61         String username = userData.getUsername();
0866d8 62         /*ApiAppEntity appInfo = apiAppService.getInfoByAppKey(username);
a6de49 63         if (appInfo == null) {
H 64             throw new RuntimeException("应用未授权");
0866d8 65         }*/
a6de49 66         //TODO 验证签名
H 67 //        if(!com.iailab.common.utils.JwtUtils.verify(token, appInfo.getAppSecret())){
68 //            throw new RuntimeException("签名错误");
69 //        }
70     }
71
72     private boolean isInteger(String str) {
73         return pattern.matcher(str).matches();
74     }
75
76
77 }