diff --git a/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java b/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java index 5ff5570..42e2bbb 100644 --- a/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java +++ b/boot-service/src/main/java/com/xwbing/service/sys/SysUserService.java @@ -19,10 +19,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.BufferedOutputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 说明: 用户服务层 @@ -302,7 +299,9 @@ public class SysUserService { throw new BusinessException("保存用户登录日志失败"); } //保存登录数据 - String token = RSAUtil.decrypt(userName + ip); + String token = RSAUtil.encrypt(userName + "_" + ip); + //对有换行的token编码 + token = EncodeUtils.urlEncode(token); CommonDataUtil.setToken(token, userName); restMessage.setData(token); restMessage.setSuccess(true); diff --git a/boot-service/src/main/java/com/xwbing/util/RSAUtil.java b/boot-service/src/main/java/com/xwbing/util/RSAUtil.java index 1f0f931..7009d88 100644 --- a/boot-service/src/main/java/com/xwbing/util/RSAUtil.java +++ b/boot-service/src/main/java/com/xwbing/util/RSAUtil.java @@ -13,6 +13,8 @@ import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import java.io.*; +import java.net.URLDecoder; +import java.net.URLEncoder; import java.security.InvalidKeyException; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; @@ -230,21 +232,23 @@ public class RSAUtil { } } - public static void main(String[] args) { + public static void main(String[] args) throws Exception { String en = testJiami();// 密文 String de = testJiemi(en);// 明文 System.out.println(de); } - private static String testJiami() { - String plainText = encrypt(loadPublicKey(), "123456"); + private static String testJiami() throws Exception { + String plainText = encrypt(loadPublicKey(), "123456");//加密后的密文有换行 System.out.println("加密结果:" + plainText); + System.out.println("加密结果encode:" + URLEncoder.encode(plainText, "utf-8")); return plainText; } - private static String testJiemi(String str) { + private static String testJiemi(String str) throws Exception { String plainText = decrypt(loadPrivateKey(), str); System.out.println("解密结果:" + plainText); + System.out.println("加密结果encode:" + URLDecoder.decode(plainText, "utf-8")); return plainText; } } diff --git a/boot-service/src/main/java/com/xwbing/util/captcha/CaptchaServlet.java b/boot-service/src/main/java/com/xwbing/util/captcha/CaptchaServlet.java index 7e25a31..486e29a 100644 --- a/boot-service/src/main/java/com/xwbing/util/captcha/CaptchaServlet.java +++ b/boot-service/src/main/java/com/xwbing/util/captcha/CaptchaServlet.java @@ -34,7 +34,6 @@ public class CaptchaServlet extends HttpServlet { StringBuffer code = new StringBuffer(); BufferedImage image = tool.genRandomCodeImage(code); HttpSession session = req.getSession(); - session.setMaxInactiveInterval(60 * 60);//单位为秒,-1永不过期 session.setAttribute(CommonConstant.KEY_CAPTCHA, code.toString()); // CommonDataUtil.setToken(CommonConstant.KEY_CAPTCHA, code.toString()); // 将内存中的图片通过流形式输出到客户端 diff --git a/boot-web/src/main/java/com/xwbing/configuration/SwaggerConfig.java b/boot-web/src/main/java/com/xwbing/configuration/SwaggerConfig.java index 993aa26..3826583 100644 --- a/boot-web/src/main/java/com/xwbing/configuration/SwaggerConfig.java +++ b/boot-web/src/main/java/com/xwbing/configuration/SwaggerConfig.java @@ -28,19 +28,15 @@ import java.util.List; public class SwaggerConfig { @Bean public Docket sysDocket() { - ParameterBuilder ticketPar = new ParameterBuilder(); - List pars = new ArrayList<>(); - ticketPar.name("token").description("令牌") - .modelRef(new ModelRef("string")).parameterType("header") - .required(false).build(); //header中的ticket参数非必填,传空也可以 - pars.add(ticketPar.build()); + List pars = addParams(); return new Docket(DocumentationType.SWAGGER_2) .groupName("system") .apiInfo(sysApiInf()) .select() .apis(RequestHandlerSelectors.basePackage("com.xwbing.controller.sys")) .paths(PathSelectors.any()) - .build(); + .build() + .globalOperationParameters(pars); } private ApiInfo sysApiInf() { @@ -55,19 +51,15 @@ public class SwaggerConfig { @Bean public Docket otherDocket() { - ParameterBuilder ticketPar = new ParameterBuilder(); - List pars = new ArrayList<>(); - ticketPar.name("token").description("令牌") - .modelRef(new ModelRef("string")).parameterType("header") - .required(false).build(); //header中的ticket参数非必填,传空也可以 - pars.add(ticketPar.build()); + List pars = addParams(); return new Docket(DocumentationType.SWAGGER_2) .groupName("other") .apiInfo(otherApiInf()) .select() .apis(RequestHandlerSelectors.basePackage("com.xwbing.controller.other")) .paths(PathSelectors.any()) - .build(); + .build() + .globalOperationParameters(pars); } private ApiInfo otherApiInf() { @@ -79,4 +71,19 @@ public class SwaggerConfig { .version("1.0.0") .build(); } + + /** + * 添加参数 + * + * @return + */ + private List addParams() { + ParameterBuilder ticketPar = new ParameterBuilder(); + List pars = new ArrayList<>(); + ticketPar.name("token").description("令牌") + .modelRef(new ModelRef("string")).parameterType("header") + .required(false).build(); + pars.add(ticketPar.build()); + return pars; + } }