Browse Source

提交前端token拦截

民生诉求功能开发
v2
chenrui 2 years ago
parent
commit
6a2b571ae0
  1. 50
      lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/AppThirdLoginController.java
  2. 53
      lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/ResourcesConfig.java
  3. 48
      lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html
  4. 1
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/MssqAddOrder.java
  5. 13
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/MssqBaseDomain.java
  6. 20
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/MssqApiService.java
  7. 81
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/MssqApiServiceImpl.java
  8. 13
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java
  9. 2
      lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/utils/ServiceInvocation.java

50
lib/EmergencyService/zdxtEmergencyAppService/src/main/java/com/zdxt/app/controller/AppThirdLoginController.java

@ -6,7 +6,9 @@ import com.auth0.jwt.JWTVerifier;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.framework.shiro.jwt.JWTUtils;
import com.zdxt.auth.project.system.user.service.IUserService;
import com.zdxt.code.domain.MssqAddOrder;
import com.zdxt.code.domain.SiqLogin;
import com.zdxt.code.service.MssqApiService;
import com.zdxt.code.service.ThirdLoginService;
import com.zdxt.code.utils.HttpUtil;
import com.zdxt.code.utils.ServiceInvocation;
@ -67,6 +69,8 @@ public class AppThirdLoginController {
@Autowired
private ZwSmsClient zwSmsClient;
@Autowired
private MssqApiService mssqApiService;
@ -300,45 +304,15 @@ public class AppThirdLoginController {
return ZDResponse.success("校验成功",aBoolean);
}
@GetMapping("/getMssqToken")
@PostMapping("/getMssqToken")
@ResponseBody
public ZDResponse getMssqToken(String appId,String appKey,String generateTokenUrl) throws Exception {
// zwSmsClient.sendMessage(phone,content);
// Boolean aBoolean = thirdLoginService.checkIsLawOfficer(idCards);
// 参数设定
// String appId = "67a83c8a136346cd98f844359902a23c";
// String appKey = "NjdhODNjOGExMzYzNDZjZDk4Zjg0NDM1OTkwMmEyM2M6TXNzcTIwMjQ=";
/*String appId = "ea5acb3cceb24365b415e9affa560d49";
String appKey = "ZWE1YWNiM2NjZWIyNDM2NWI0MTVlOWFmZmE1NjBkNDk6eDEyMzQ1Ng==";*/
String currTime = String.valueOf(System.currentTimeMillis());
//服务聚合获取tokenUrl
// String generateTokenUrl = "http://10.132.108.3/mssqApi/auth/token";
// String invokingServiceUrl="http://10.132.108.3/mssqApi/auth/token";
String invokingServiceRequestMethod="POST";
// 服务调用的请求方法
// 1.获取本地签名
String tokenSign = gatewaySignEncode(appId, appKey, currTime);
// 2.调用获取token接口
JSONObject jsonObject = ServiceInvocation.httpRequest(generateTokenUrl, "POST", "", appId, currTime, tokenSign);
JSONObject jsonObjectBody = JSONObject.parseObject(jsonObject.getString("body"));
log.info("民生诉求获取token接口:{}",jsonObject);
if (jsonObjectBody != null) {
String accessToken = jsonObjectBody.getString("access_token");
// 3.在获得服务调用秘钥access_token后,根据自己的appKey使用AES解密算法对返回值进行解密,最终获取签名密钥secretKey
String secretKey = ServiceInvocation.gatewayAesDecode(appKey, accessToken);
// 4.获取本地签名
String sign = ServiceInvocation.gatewaySignEncode(appId, secretKey, currTime);
// //4.调用服务接口
// JSONObject serviceJsonData = httpRequestForInterface(invokingServiceUrl, invokingServiceRequestMethod, "", appId, currTime, sign);
// String codeValue = serviceJsonData.getString("code");
// if (codeValue.equals("200")) {
// log.info("请求url:{},响应成功!",invokingServiceUrl);
// } else {
// log.error("请求url:{},响应失败!",invokingServiceUrl);
// }
} else {}
return ZDResponse.success("校验成功",null);
public ZDResponse getMssqToken(MssqAddOrder mssqAddOrder) throws Exception {
Boolean aBoolean = mssqApiService.addMssqOrder(mssqAddOrder);
if(aBoolean){
return ZDResponse.success("工单新增成功");
}else{
return ZDResponse.error("工单新增失败");
}
}
}

53
lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/config/ResourcesConfig.java

@ -63,30 +63,33 @@ public class ResourcesConfig implements WebMvcConfigurer
public void addInterceptors(InterceptorRegistry registry)
{
// registry.addInterceptor(repeatSubmitInterceptor).addPathPatterns("/**");
// registry.addInterceptor(new JWTInterceptor())
// .addPathPatterns("/app/**")
// .excludePathPatterns("/app/thirdLogin/siqLogin", "/appLogin","/login","/index",
// "/enterpriseInformation",
// "/code/registration",
// "/code/linkage",
// "/code/ruleList",
// "/code/LawEnforcementWarningList",
// "/system/dept",
// "/system/user",
// "/system/role",
// "/system/post",
// "/system/menu",
// "/monitor/operlog",
// "/monitor/logininfor",
// "/system/dict",
// "/system/config",
// "/monitor/job",
// "/statistical/analysis",
// "/statistical/view",
// "/**/*.css",
// "/**/*.js", "/**/*.png", "/**/*.jpg",
// "/**/*.jpeg", "/**/*.gif", "/**/fonts/*"
// ).addPathPatterns("/**");
// 除了登录放行,其他接口都token验证
registry.addInterceptor(new JWTInterceptor())
.addPathPatterns("/app/**")
.excludePathPatterns("/app/thirdLogin/siqLogin","/app/thirdLogin/siqLoginTest",
"/app/thirdLogin/szyptLogin/**",
"/captcha/captchaImage/**",
"/appLogin","/login","/index",
"/enterpriseInformation",
"/code/registration",
"/code/linkage",
"/code/ruleList",
"/code/LawEnforcementWarningList",
"/system/dept",
"/system/user",
"/system/role",
"/system/post",
"/system/menu",
"/monitor/operlog",
"/monitor/logininfor",
"/system/dict",
"/system/config",
"/monitor/job",
"/statistical/analysis",
"/statistical/view",
"/**/*.css",
"/**/*.js", "/**/*.png", "/**/*.jpg",
"/**/*.jpeg", "/**/*.gif", "/**/fonts/*"
).addPathPatterns("/**");
// 除了登录放行,其他接口都token验证
}
}

48
lib/EmergencyService/zdxtEmergencyBootStart/src/main/resources/templates/login.html

@ -19,14 +19,14 @@
<style>
.loginbox input.vcsty {
width: 30%;
width: 45% !important;
border-bottom: 1px solid #ddd;
}
.vcode {
float: right;
margin-right: 5%;
width: 54%;
/*width: 54%;*/
height: 40px;
border: 1px solid #eee;
overflow: hidden;
@ -36,7 +36,40 @@
width: auto;
height: 100%;
}
</style>
.logindiv{
display: flex;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
align-content: stretch;
flex-direction: row-reverse;
}
.loginpassword{
width: 40%;
}
.loginbox input .checksty{
width: 16px !important;
margin-top: 0;
}
.remtxt {
display: inherit;
margin: -38px 0 0 42px !important;
color: #666666;
}
.loginbtn {
margin: 5% auto 0;
background-color: #1367fe;
border-radius: 50px;
color: #fff;
font-size: 16px;
line-height: 40px;
text-align: center;
box-shadow: 0 0 10px rgba(19, 103, 254, .8);
width: 49% !important;
}
</style>
</head>
@ -51,7 +84,7 @@
<div class="inptit">密码</div>
<!--<input class="pwsty" type="text" value="请输入密码" id="login_showPwd" />-->
<input class="pwsty" type="password" placeholder="请输入密码" id="login-password" name="password" />
<input class="checksty" name="" type="checkbox" value="" checked="checked" /><span class="remtxt">记住密码</span>
<!--<a href="#" class="fortxt">忘记密码?</a> -->
<div class="vcbox" th:if="${captchaEnabled==true}">
<div class="inptit">验证码</div>
@ -62,7 +95,12 @@
</a>
</div>
</div>
<div class="loginbtn" id="login">登录</div>
<div class="logindiv">
<div>
<input class="checksty" name="" type="checkbox" value="" checked="checked" /><span class="remtxt">记住密码</span>
</div>
<div class="loginbtn" id="login">登录</div>
</div>
</div>
</div>
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>

1
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/MssqAddOrder.java

@ -117,6 +117,7 @@ public class MssqAddOrder extends MssqBaseDomain {
private List<FileData> fileDatas;
private class FileData{
/**
* 附件名称

13
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/domain/MssqBaseDomain.java

@ -18,6 +18,11 @@ public class MssqBaseDomain {
* 请求头携带的签名
*/
private String gatewaySig;
/**
* 请求方式
*/
private String invokingServiceRequestMethod;
/**
* 请求头携带的当前时间的时间戳
*/
@ -62,4 +67,12 @@ public class MssqBaseDomain {
public void setGatewayRtime(String gatewayRtime) {
this.gatewayRtime = gatewayRtime;
}
public String getInvokingServiceRequestMethod() {
return invokingServiceRequestMethod;
}
public void setInvokingServiceRequestMethod(String invokingServiceRequestMethod) {
this.invokingServiceRequestMethod = invokingServiceRequestMethod;
}
}

20
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/MssqApiService.java

@ -0,0 +1,20 @@
package com.zdxt.code.service;
import com.zdxt.code.domain.MssqAddOrder;
import com.zdxt.code.domain.MssqBaseDomain;
import org.springframework.beans.factory.annotation.Value;
/**
* 民生诉求接口实现类
*/
public interface MssqApiService {
/**
* 添加民生诉求工单
* @param mssqAddOrder
* @return
*/
Boolean addMssqOrder(MssqAddOrder mssqAddOrder) throws Exception;
MssqBaseDomain getMssqToken() throws Exception;
}

81
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/MssqApiServiceImpl.java

@ -0,0 +1,81 @@
package com.zdxt.code.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.zdxt.code.domain.MssqAddOrder;
import com.zdxt.code.domain.MssqBaseDomain;
import com.zdxt.code.service.MssqApiService;
import com.zdxt.code.utils.ServiceInvocation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import static com.zdxt.code.utils.ServiceInvocation.gatewaySignEncode;
import static com.zdxt.code.utils.ServiceInvocation.httpRequest;
@Slf4j
@Service
public class MssqApiServiceImpl implements MssqApiService {
@Value("mssq.apiUrl")
private String mssqUrl;
@Value("mssq.appId")
private String appId;
@Value("mssq.appKey")
private String appKey;
@Override
public Boolean addMssqOrder(MssqAddOrder mssqAddOrder) throws Exception {
MssqBaseDomain mssqToken = this.getMssqToken();
mssqAddOrder.setAccessToken(mssqToken.getAccessToken());
//appId
mssqAddOrder.setAppId(appId);
//签名
mssqAddOrder.setGatewaySig(mssqToken.getGatewaySig());
//请求时间戳
mssqAddOrder.setGatewayRtime(mssqToken.getGatewayRtime());
String s = JSONObject.toJSONString(mssqAddOrder);
log.info("民生诉求token:{}",JSONObject.toJSONString(mssqToken));
log.info("民生诉求工单新增,上传参数:{}",s);
JSONObject serviceJsonData = ServiceInvocation.httpRequestForInterface(mssqUrl + "/handlerProcess/channelAddOrder",
mssqAddOrder.getInvokingServiceRequestMethod(), s, appId, mssqToken.getGatewayRtime(), mssqToken.getGatewaySig());
String codeValue = serviceJsonData.getString("code");
if (codeValue.equals("200")) {
log.info("请求url:{},响应成功!",mssqUrl + "/handlerProcess/channelAddOrder");
return Boolean.TRUE;
} else {
log.error("请求url:{},响应失败!,响应结果:{}",mssqUrl + "/handlerProcess/channelAddOrder",serviceJsonData);
return Boolean.FALSE;
}
// return null;
}
@Override
public MssqBaseDomain getMssqToken() throws Exception {
MssqBaseDomain mssqBaseDomain = new MssqBaseDomain();
String currTime = String.valueOf(System.currentTimeMillis());
String invokingServiceRequestMethod="POST";
// 服务调用的请求方法
// 1.获取本地签名
String tokenSign = gatewaySignEncode(appId, appKey, currTime);
// 2.调用获取token接口
JSONObject jsonObject = httpRequest(mssqUrl + "/auth/token", "POST", "", appId, currTime, tokenSign);
JSONObject jsonObjectBody = JSONObject.parseObject(jsonObject.getString("body"));
// log.info("民生诉求获取token接口:{}",jsonObject);
if (jsonObjectBody != null) {
String accessToken = jsonObjectBody.getString("access_token");
// 3.在获得服务调用秘钥access_token后,根据自己的appKey使用AES解密算法对返回值进行解密,最终获取签名密钥secretKey
String secretKey = ServiceInvocation.gatewayAesDecode(appKey, accessToken);
// 4.获取本地签名
String sign = gatewaySignEncode(appId, secretKey, currTime);
mssqBaseDomain.setAccessToken(accessToken);
//签名
mssqBaseDomain.setGatewaySig(sign);
}
//当前时间戳
mssqBaseDomain.setGatewayRtime(currTime);
return mssqBaseDomain;
}
}

13
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java

@ -7,6 +7,7 @@ import com.zdxt.auth.dto.DeptBean;
import com.zdxt.auth.dto.UserBean;
import com.zdxt.auth.feign.DeptApi;
import com.zdxt.auth.feign.UserApi;
import com.zdxt.auth.framework.shiro.jwt.JWTUtils;
import com.zdxt.auth.framework.shiro.nopaddword.LoginType;
import com.zdxt.auth.framework.shiro.nopaddword.UserToken;
import com.zdxt.code.domain.EnterpriseInformation;
@ -27,7 +28,9 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@ -71,6 +74,11 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
Subject subject = SecurityUtils.getSubject();
subject.login(sysToken);
user.setEnterpriseNumber(jsonObject.getString("corpCid"));
Map<String,Object> payload = new HashMap<>();
payload.put("id", user.getUserId());
payload.put("name", user.getLoginName());
String token1 = JWTUtils.sign(payload);
user.setToken(token1);
return ZDResponse.success("登录成功",user);
} catch (Exception e) {
e.printStackTrace();
@ -97,6 +105,11 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
// }else{
// user.setLawOfficer(false);
// }
Map<String,Object> payload = new HashMap<>();
payload.put("id", user.getUserId());
payload.put("name", user.getLoginName());
String token1 = JWTUtils.sign(payload);
user.setToken(token1);
return ZDResponse.success("登录成功",user);
} catch (Exception e) {
e.printStackTrace();

2
lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/utils/ServiceInvocation.java

@ -160,7 +160,7 @@ public class ServiceInvocation {
}
return jsonObject;
}
private static JSONObject httpRequestForInterface(String requestUrl, String requestMethod, String reqBody, String appIdorSecretKey,
public static JSONObject httpRequestForInterface(String requestUrl, String requestMethod, String reqBody, String appIdorSecretKey,
String currTime, String sign) throws Exception {
JSONObject jsonObject=new JSONObject();
StringBuffer buffer = new StringBuffer();

Loading…
Cancel
Save