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.feign.UserApi;
import com.zdxt.auth.framework.shiro.jwt.JWTUtils; import com.zdxt.auth.framework.shiro.jwt.JWTUtils;
import com.zdxt.auth.project.system.user.service.IUserService; 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.domain.SiqLogin;
import com.zdxt.code.service.MssqApiService;
import com.zdxt.code.service.ThirdLoginService; import com.zdxt.code.service.ThirdLoginService;
import com.zdxt.code.utils.HttpUtil; import com.zdxt.code.utils.HttpUtil;
import com.zdxt.code.utils.ServiceInvocation; import com.zdxt.code.utils.ServiceInvocation;
@ -67,6 +69,8 @@ public class AppThirdLoginController {
@Autowired @Autowired
private ZwSmsClient zwSmsClient; private ZwSmsClient zwSmsClient;
@Autowired
private MssqApiService mssqApiService;
@ -300,45 +304,15 @@ public class AppThirdLoginController {
return ZDResponse.success("校验成功",aBoolean); return ZDResponse.success("校验成功",aBoolean);
} }
@GetMapping("/getMssqToken") @PostMapping("/getMssqToken")
@ResponseBody @ResponseBody
public ZDResponse getMssqToken(String appId,String appKey,String generateTokenUrl) throws Exception { public ZDResponse getMssqToken(MssqAddOrder mssqAddOrder) throws Exception {
// zwSmsClient.sendMessage(phone,content); Boolean aBoolean = mssqApiService.addMssqOrder(mssqAddOrder);
// Boolean aBoolean = thirdLoginService.checkIsLawOfficer(idCards); if(aBoolean){
// 参数设定 return ZDResponse.success("工单新增成功");
// String appId = "67a83c8a136346cd98f844359902a23c"; }else{
// String appKey = "NjdhODNjOGExMzYzNDZjZDk4Zjg0NDM1OTkwMmEyM2M6TXNzcTIwMjQ="; return ZDResponse.error("工单新增失败");
/*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);
} }
} }

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

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

@ -19,14 +19,14 @@
<style> <style>
.loginbox input.vcsty { .loginbox input.vcsty {
width: 30%; width: 45% !important;
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
} }
.vcode { .vcode {
float: right; float: right;
margin-right: 5%; margin-right: 5%;
width: 54%; /*width: 54%;*/
height: 40px; height: 40px;
border: 1px solid #eee; border: 1px solid #eee;
overflow: hidden; overflow: hidden;
@ -36,7 +36,40 @@
width: auto; width: auto;
height: 100%; 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> </head>
@ -51,7 +84,7 @@
<div class="inptit">密码</div> <div class="inptit">密码</div>
<!--<input class="pwsty" type="text" value="请输入密码" id="login_showPwd" />--> <!--<input class="pwsty" type="text" value="请输入密码" id="login_showPwd" />-->
<input class="pwsty" type="password" placeholder="请输入密码" id="login-password" name="password" /> <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> --> <!--<a href="#" class="fortxt">忘记密码?</a> -->
<div class="vcbox" th:if="${captchaEnabled==true}"> <div class="vcbox" th:if="${captchaEnabled==true}">
<div class="inptit">验证码</div> <div class="inptit">验证码</div>
@ -62,7 +95,12 @@
</a> </a>
</div> </div>
</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>
</div> </div>
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script> <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 List<FileData> fileDatas;
private class FileData{ 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 gatewaySig;
/**
* 请求方式
*/
private String invokingServiceRequestMethod;
/** /**
* 请求头携带的当前时间的时间戳 * 请求头携带的当前时间的时间戳
*/ */
@ -62,4 +67,12 @@ public class MssqBaseDomain {
public void setGatewayRtime(String gatewayRtime) { public void setGatewayRtime(String gatewayRtime) {
this.gatewayRtime = 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.dto.UserBean;
import com.zdxt.auth.feign.DeptApi; import com.zdxt.auth.feign.DeptApi;
import com.zdxt.auth.feign.UserApi; 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.LoginType;
import com.zdxt.auth.framework.shiro.nopaddword.UserToken; import com.zdxt.auth.framework.shiro.nopaddword.UserToken;
import com.zdxt.code.domain.EnterpriseInformation; import com.zdxt.code.domain.EnterpriseInformation;
@ -27,7 +28,9 @@ import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service
@ -71,6 +74,11 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
Subject subject = SecurityUtils.getSubject(); Subject subject = SecurityUtils.getSubject();
subject.login(sysToken); subject.login(sysToken);
user.setEnterpriseNumber(jsonObject.getString("corpCid")); 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); return ZDResponse.success("登录成功",user);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@ -97,6 +105,11 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
// }else{ // }else{
// user.setLawOfficer(false); // 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); return ZDResponse.success("登录成功",user);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

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

@ -160,7 +160,7 @@ public class ServiceInvocation {
} }
return jsonObject; 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 { String currTime, String sign) throws Exception {
JSONObject jsonObject=new JSONObject(); JSONObject jsonObject=new JSONObject();
StringBuffer buffer = new StringBuffer(); StringBuffer buffer = new StringBuffer();

Loading…
Cancel
Save