diff --git a/pom.xml b/pom.xml index 94c31d92..4f1706c4 100644 --- a/pom.xml +++ b/pom.xml @@ -254,6 +254,13 @@ 1.6.3 + + + commons-codec + commons-codec + 1.13 + + diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index fff457a7..c5ab3395 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -17,11 +17,17 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.time.Duration; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.*; /** @@ -116,6 +122,10 @@ public class PageController { */ @GetMapping("/login") public ModelAndView login(HttpServletRequest request) { + String msg = (String)request.getParameter("msg"); + if(msg!=null && msg.length()>0){ + + } ModelAndView mv = new ModelAndView(); JSONObject captcha = PublicConfig.Captcha(request); String picPath = (String) captcha.get("picPath"); @@ -123,6 +133,9 @@ public class PageController { mv.addObject("picPath", picPath); mv.addObject("captchaid", captchaid); mv.addObject("userWxId", ""); + if(msg!=null && msg.length()>0){ + mv.addObject("msg", msg); + } mv.setViewName("pages/user/login"); return mv; } @@ -185,6 +198,74 @@ public class PageController { } + /** + * 数通智联无感登录 + * + * @param request + * @return + */ + @GetMapping("/insensibleLogin") + public String insensibleLogin(HttpServletRequest request, RedirectAttributes attr) { + long javaTime = System.currentTimeMillis(); + ModelAndView mv = new ModelAndView(); + Boolean flag = false; + String msg = ""; + String userkey1 = (String)request.getParameter("userkey"); + String usertoken1 = (String)request.getParameter("usertoken"); + String sing1 = (String)request.getParameter("sing"); + String time1 = (String)request.getParameter("time"); + if (null != userkey1 && userkey1.length() != 0 && null != usertoken1 && usertoken1.length() != 0 && null != sing1 && sing1.length() != 0 && null != time1 && time1.length() != 0){ + long time1Long = Long.parseLong(time1); + // 将时间戳转换为LocalDateTime对象 + LocalDateTime dateTime1 = LocalDateTime.ofInstant(Instant.ofEpochMilli(javaTime), ZoneId.systemDefault()); + LocalDateTime dateTime2 = LocalDateTime.ofInstant(Instant.ofEpochMilli(time1Long), ZoneId.systemDefault()); + // 计算时间差 + Duration duration = Duration.between(dateTime2, dateTime1); + //Duration duration = Duration.between(dateTime1, dateTime2); + // 获取时间差的毫秒数 + long diffMillis = duration.toMillis(); + if(diffMillis<5000){//如果间隔时间不超过5秒 + String singJava = Md5Util.md5InsensibleLogin(userkey1, usertoken1, time1); + if(sing1.equals(singJava)){//校验通过允许无感登录 + flag = true; + } + }else{ + msg = "授权请求超时"; + } + }else{ + msg = "有空参数"; + } + if(flag){ + //从redis中获取UserByPort数据并构造对象. + Map map = new HashMap<>(); + map.put("userWxId",""); + map.put("username",""); + map.put("password",""); + map.put("captcha","1"); + UserByPort userinfo = userService.getUserByKeyAndToken(userkey1,usertoken1); + if(null != userinfo){ + // 设置放入时间 + userinfo.setInstant(Instant.now()); + // 将登录用户存储到池中保存 + AuthenticationTokenPool.addUserToken(usertoken1, userinfo); + // 将key与token设置到session中 + request.getSession().setAttribute("userKey", userkey1); + request.getSession().setAttribute("userToken", usertoken1); + request.getSession().setMaxInactiveInterval(3 * 60 * 60); + }else{ + msg = "获取用户信息失败"; + attr.addAttribute("msg", msg); + return "redirect:/login"; + } + }else{ + //校验不通过不能登录,弹窗提示失败原因 + attr.addAttribute("msg", msg); + return "redirect:/login"; + } + return"redirect:/index"; + } + + /** * 账号注册,弃用 * diff --git a/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java b/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java index 960584c1..a78bcaeb 100644 --- a/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java +++ b/src/main/java/com/dreamchaser/depository_manage/entity/UserByPort.java @@ -307,6 +307,9 @@ public class UserByPort { */ private long term = DEFAULT_TERM; + //version4 + private String teamid; + /** * 根据时间判断是否有效 * diff --git a/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java b/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java index a4a6a0e1..0b6799a4 100644 --- a/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java +++ b/src/main/java/com/dreamchaser/depository_manage/intercepter/UserInterceptor.java @@ -32,6 +32,7 @@ public class UserInterceptor extends HandlerInterceptorAdapter { add("/getMaterialAll"); add("/getCaptchaid"); add("/loginOut"); + add("/insensibleLogin"); } }; private static RedisPool redisPool; diff --git a/src/main/java/com/dreamchaser/depository_manage/service/UserService.java b/src/main/java/com/dreamchaser/depository_manage/service/UserService.java index 75ca4526..698e3bcc 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/UserService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/UserService.java @@ -104,4 +104,6 @@ public interface UserService { * @return */ Boolean isUserNeiQin(Long id); + + UserByPort getUserByKeyAndToken(String userkey1, String usertoken1); } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java index e9877917..0ec8a61f 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/UserServiceImpl.java @@ -1,19 +1,20 @@ package com.dreamchaser.depository_manage.service.impl; +import com.dreamchaser.depository_manage.config.PublicConfig; import com.dreamchaser.depository_manage.entity.Administration; import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.hrNew_mapper.AdministrativeMapper; import com.dreamchaser.depository_manage.hrNew_mapper.UserMapper; +import com.dreamchaser.depository_manage.intercepter.UserInterceptor; import com.dreamchaser.depository_manage.pojo.UserByPortP; +import com.dreamchaser.depository_manage.security.pool.RedisPool; import com.dreamchaser.depository_manage.service.AdministrativeService; import com.dreamchaser.depository_manage.service.UserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Service public class UserServiceImpl implements UserService { @@ -24,6 +25,16 @@ public class UserServiceImpl implements UserService { @Autowired private AdministrativeService administrativeService; + private static RedisPool redisPool; + private static RedisTemplate redisTemplate; + + @Autowired + public void setRedisTemplate(RedisPool redisPool) { + UserServiceImpl.redisPool = redisPool; + } + @Autowired + public void setRedisTemplate(RedisTemplate redisTemplate){UserServiceImpl.redisTemplate = redisTemplate;} + /** * 通过id获取用户信息(包装) @@ -210,6 +221,385 @@ public class UserServiceImpl implements UserService { return flag; } + /** + * 根据userkey和usertoken获取UserByPort + * @param userkey1 + * @param usertoken1 + * @return + */ + @Override + public UserByPort getUserByKeyAndToken(String userkey1, String usertoken1) { + Boolean flag = false; + int count = 0; + String usernumber = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(PublicConfig.LoginRedisPrefix+userkey1,"usernumber"); + UserByPort userByPort = new UserByPort(); + if(usernumber!=null && usernumber.length()>0){ + String redis5UserInfoKey = PublicConfig.userInfoRedisPrefix+usernumber; + Set keys1 = redisPool.getRedisTemplateByDb(5).boundHashOps(redis5UserInfoKey).keys(); + if(keys1.size()>0){ + + for(Object item:keys1){ + //System.out.println(item.toString()); + String mykey = item.toString(); + if(mykey != null && mykey.length() > 0){ + count++; + switch(mykey){ + case "jobstartdate" : + String jobstartdate = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"jobstartdate"); + if(null != jobstartdate && jobstartdate.length()>0){ + long jobstartdateLong = Long.parseLong(jobstartdate); + userByPort.setJobstartdate(jobstartdateLong); + } + break; + case "idcardaddress" : + String idcardaddress = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"idcardaddress"); + if(null != idcardaddress && idcardaddress.length()>0){ + userByPort.setIdcardaddress(idcardaddress); + } + break; + case "idcardstartdate" : + String idcardstartdate = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"idcardstartdate"); + if(null != idcardstartdate && idcardstartdate.length()>0){ + long idcardstartdateLong = Long.parseLong(idcardstartdate); + userByPort.setIdcardstartdate(idcardstartdateLong); + } + break; + case "maindeparment" : + String maindeparment = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"maindeparment"); + if(null != maindeparment && maindeparment.length()>0){ + long longstr = Long.parseLong(maindeparment); + userByPort.setMaindeparment(longstr); + } + break; + case "probationperiod" : + String probationperiod = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"probationperiod"); + if(null != probationperiod && probationperiod.length()>0){ + Integer strInt = Integer.parseInt(probationperiod); + userByPort.setProbationperiod(strInt); + } + break; + case "adminorg" : + String adminorg = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"adminorg"); + if(null != adminorg && adminorg.length()>0){ + long longstr = Long.parseLong(adminorg); + userByPort.setAdminorg(longstr); + } + break; + case "isveterans" : + String isveterans = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"isveterans"); + if(null != isveterans && isveterans.length()>0){ + Integer strInt = Integer.parseInt(isveterans); + userByPort.setIsveterans(strInt); + } + break; + case "jobid" : + String jobid = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"jobid"); + if(null != jobid && jobid.length()>0){ + long longstr = Long.parseLong(jobid); + userByPort.setJobid(longstr); + } + break; + case "number" : + String number = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"number"); + if(null != number && number.length()>0){ + userByPort.setNumber(number); + } + break; + case "password" : + String password = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"password"); + if(null != password && password.length()>0){ + userByPort.setPassword(password); + } + break; + case "veteransnumber" : + String veteransnumber = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"veteransnumber"); + if(null != veteransnumber && veteransnumber.length()>0){ + userByPort.setVeteransnumber(veteransnumber); + } + break; + case "deparment" : + String deparment = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"deparment"); + if(null != deparment && deparment.length()>0){ + userByPort.setDeparment(deparment); + } + break; + case "mobilephone" : + String mobilephone = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"mobilephone"); + if(null != mobilephone && mobilephone.length()>0){ + userByPort.setMobilephone(mobilephone); + } + break; + case "teamid" : + String teamid = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"teamid"); + if(null != teamid && teamid.length()>0){ + userByPort.setTeamid(teamid); + } + break; + case "id" : + String id = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"id"); + if(null != id && id.length()>0){ + long longstr = Long.parseLong(id); + userByPort.setId(longstr); + } + break; + case "nativeplace" : + String nativeplace = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"nativeplace"); + if(null != nativeplace && nativeplace.length()>0){ + userByPort.setNativeplace(nativeplace); + } + break; + case "state" : + String state = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"state"); + if(null != state && state.length()>0){ + Integer strInt = Integer.parseInt(state); + userByPort.setState(strInt); + } + break; + case "internaltelephone" : + String internaltelephone = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"internaltelephone"); + if(null != internaltelephone && internaltelephone.length()>0){ + userByPort.setInternaltelephone(internaltelephone); + } + break; + case "sunmaindeparment" : + String sunmaindeparment = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"sunmaindeparment"); + if(null != sunmaindeparment && sunmaindeparment.length()>0){ + long longstr = Long.parseLong(sunmaindeparment); + userByPort.setSunmaindeparment(longstr); + } + break; + case "currentresidence" : + String currentresidence = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"currentresidence"); + if(null != currentresidence && currentresidence.length()>0){ + userByPort.setCurrentresidence(currentresidence); + } + break; + case "positionname" : + String positionname = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"positionname"); + if(null != positionname && positionname.length()>0){ + userByPort.setPositionname(positionname); + } + break; + case "hireclass" : + String hireclass = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"hireclass"); + if(null != hireclass && hireclass.length()>0){ + Integer strInt = Integer.parseInt(hireclass); + userByPort.setHireclass(strInt); + } + break; + case "jobclass" : + String jobclass = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"jobclass"); + if(null != jobclass && jobclass.length()>0){ + Integer strInt = Integer.parseInt(jobclass); + userByPort.setJobclass(strInt); + } + break; + case "political_outlook" : + String political_outlook = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"political_outlook"); + if(null != political_outlook && political_outlook.length()>0){ + Integer strInt = Integer.parseInt(political_outlook); + userByPort.setPoliticaloutlook(strInt); + } + break; + case "emptype" : + String emptype = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"emptype"); + if(null != emptype && emptype.length()>0){ + Integer strInt = Integer.parseInt(emptype); + userByPort.setEmptype(strInt); + } + break; + case "maritalstatus" : + String maritalstatus = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"maritalstatus"); + if(null != maritalstatus && maritalstatus.length()>0){ + Integer strInt = Integer.parseInt(maritalstatus); + userByPort.setMaritalstatus(strInt); + } + break; + case "companyname" : + String companyname = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"companyname"); + if(null != companyname && companyname.length()>0){ + userByPort.setCompanyname(companyname); + } + break; + case "name" : + String name = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"name"); + if(null != name && name.length()>0){ + userByPort.setName(name); + } + break; + case "position" : + String position = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"position"); + if(null != position && position.length()>0){ + long longstr = Long.parseLong(position); + userByPort.setPosition(longstr); + } + break; + case "birthday" : + String birthday = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"birthday"); + if(null != birthday && birthday.length()>0){ + long longstr = Long.parseLong(birthday); + userByPort.setBirthday(longstr); + } + break; + case "passportno" : + String passportno = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"passportno"); + if(null != passportno && passportno.length()>0){ + userByPort.setPassportno(passportno); + } + break; + case "planformaldate" : + String planformaldate = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"planformaldate"); + if(null != planformaldate && planformaldate.length()>0){ + long longstr = Long.parseLong(planformaldate); + userByPort.setPlanformaldate(longstr); + } + break; + case "globalroaming" : + String globalroaming = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"globalroaming"); + if(null != globalroaming && globalroaming.length()>0){ + userByPort.setGlobalroaming(globalroaming); + } + break; + case "role" : + String role = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"role"); + if(null != role && role.length()>0){ + userByPort.setRole(role); + } + break; + case "gender" : + String gender = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"gender"); + if(null != gender && gender.length()>0){ + Integer strInt = Integer.parseInt(gender); + userByPort.setGender(strInt); + } + break; + case "constellationing" : + String constellationing = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"constellationing"); + if(null != constellationing && constellationing.length()>0){ + Integer strInt = Integer.parseInt(constellationing); + userByPort.setConstellationing(strInt); + } + break; + case "icon" : + String icon = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"icon"); + if(null != icon && icon.length()>0){ + userByPort.setIcon(icon); + } + break; + case "entrydate" : + String entrydate = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"entrydate"); + if(null != entrydate && entrydate.length()>0){ + long longstr = Long.parseLong(entrydate); + userByPort.setEntrydate(longstr); + } + break; + case "isadmin" : + String isadmin = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"isadmin"); + if(null != isadmin && isadmin.length()>0){ + Integer strInt = Integer.parseInt(isadmin); + userByPort.setIsadmin(strInt); + } + break; + case "maindeparmentname" : + String maindeparmentname = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"maindeparmentname"); + if(null != maindeparmentname && maindeparmentname.length()>0){ + userByPort.setMaindeparmentname(maindeparmentname); + } + break; + case "company" : + String company = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"company"); + if(null != company && company.length()>0){ + long longstr = Long.parseLong(company); + userByPort.setCompany(longstr); + } + break; + case "email" : + String email = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"email"); + if(null != email && email.length()>0){ + userByPort.setEmail(email); + } + break; + case "key" : + String key = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"key"); + if(null != key && key.length()>0){ + long longstr = Long.parseLong(key); + userByPort.setKey(longstr); + } + break; + case "isdoubleworker" : + String isdoubleworker = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"isdoubleworker"); + if(null != isdoubleworker && isdoubleworker.length()>0){ + Integer strInt = Integer.parseInt(isdoubleworker); + userByPort.setIsdoubleworker(strInt); + } + break; + case "wechat" : + String wechat = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"wechat"); + if(null != wechat && wechat.length()>0){ + userByPort.setWechat(wechat); + } + break; + case "workwechat" : + String workwechat = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"workwechat"); + if(null != workwechat && workwechat.length()>0){ + userByPort.setWorkwechat(workwechat); + } + break; + case "health" : + String health = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"health"); + if(null != health && health.length()>0){ + Integer strInt = Integer.parseInt(health); + userByPort.setHealth(strInt); + } + break; + case "idcardno" : + String idcardno = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"idcardno"); + if(null != idcardno && idcardno.length()>0){ + userByPort.setIdcardno(idcardno); + } + break; + case "myfolk" : + String myfolk = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"myfolk"); + if(null != myfolk && myfolk.length()>0){ + userByPort.setMyfolk(myfolk); + } + break; + case "idcardIssued" : + String idcardIssued = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"idcardIssued"); + if(null != idcardIssued && idcardIssued.length()>0){ + userByPort.setIdcardIssued(idcardIssued); + } + break; + case "idcardenddate" : + String idcardenddate = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"idcardenddate"); + if(null != idcardenddate && idcardenddate.length()>0){ + long longstr = Long.parseLong(idcardenddate); + userByPort.setIdcardenddate(longstr); + } + break; + case "jobleve" : + String jobleve = (String) redisPool.getRedisTemplateByDb(5).opsForHash().get(redis5UserInfoKey,"jobleve"); + if(null != jobleve && jobleve.length()>0){ + Integer strInt = Integer.parseInt(jobleve); + userByPort.setJobleve(strInt); + } + break; + } + + } + } + if(count>0){ + flag = true; + } + } + } + if(flag){ + return userByPort; + }else{ + return null; + } + } + public UserByPort packForOne(UserByPort userByPort) { // 获取当前用户所处部门 diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/Md5Util.java b/src/main/java/com/dreamchaser/depository_manage/utils/Md5Util.java new file mode 100644 index 00000000..8c3a97b4 --- /dev/null +++ b/src/main/java/com/dreamchaser/depository_manage/utils/Md5Util.java @@ -0,0 +1,57 @@ +package com.dreamchaser.depository_manage.utils; +// 此处需要引入 commons-codec-1.13.jar +import org.apache.commons.codec.binary.Hex; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * Created by Miracle Luna on 2019/11/18 + */ +public class Md5Util { + + /** + * 将数据进行 MD5 加密,并以16进制字符串格式输出 + * @param data + * @return + */ + public static String md5(String data) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + return Hex.encodeHexString(md.digest(data.getBytes(StandardCharsets.UTF_8))); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return ""; + } + + public static String md5InsensibleLogin(String userkey1,String usertoken1,String time1){ + /** + * ## 加密规则 + * + * ``` + * 1、分解步骤 + * one = md5(CodeString)+md5(AppKey) + * two = md5(one)+AppKey + * therr = md5(two) + * 2、合并 + * md5(md5(md5(CodeString)+md5(AppKey))+AppKey) + * ``` + */ + String codeString = userkey1+usertoken1+time1; + String result = ""; + String appKey = "heng_xin_gao_ke_AppKey"; + String one = md5(codeString)+md5(appKey); + String two = md5(one)+appKey; + result = md5(two); + return result; + } + + /*public static void main(String[] args) { + String password = "password"; + String md5HexStr = md5(password); + System.out.println("==> MD5 加密前: " + password); + System.out.println("==> MD5 加密后: " + md5HexStr); + }*/ +} \ No newline at end of file diff --git a/src/main/resources/templates/pages/user/login.html b/src/main/resources/templates/pages/user/login.html index 0f87c3f6..5b5327c0 100644 --- a/src/main/resources/templates/pages/user/login.html +++ b/src/main/resources/templates/pages/user/login.html @@ -188,7 +188,7 @@ - +