diff --git a/dq-financial-api/src/main/java/com/daqing/financial/hrauth/UserLoginControllerApi.java b/dq-financial-api/src/main/java/com/daqing/financial/hrauth/UserLoginControllerApi.java new file mode 100644 index 00000000..5a32c03c --- /dev/null +++ b/dq-financial-api/src/main/java/com/daqing/financial/hrauth/UserLoginControllerApi.java @@ -0,0 +1,30 @@ +package com.daqing.financial.hrauth; + +import com.daqing.framework.domain.hrms.request.LoginRequest; +import com.daqing.framework.domain.hrms.request.UserLoginRequest; +import com.daqing.framework.model.response.ResponseResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * @Author: gongsj. + * @Description: 登录controllerApi定义 + * @Date:Created in 2020/09/07 11:33. + * @Modified By: + */ +@Api(value = "登录相关操作", tags = "提供登录相关操作") +public interface UserLoginControllerApi { + + /** + * 验证手机号及验证码 + */ + @ApiOperation(value = "验证手机号及验证码", notes = "验证手机号及验证码") + ResponseResult verifyMobile(UserLoginRequest user); + + @ApiOperation(value = "重置密码") + ResponseResult getBackPwd(UserLoginRequest user); + + @ApiOperation(value = "登录") + ResponseResult login(LoginRequest loginRequest); + +} diff --git a/dq-financial-hrms-auth/pom.xml b/dq-financial-hrms-auth/pom.xml index e9b706df..51f3e298 100644 --- a/dq-financial-hrms-auth/pom.xml +++ b/dq-financial-hrms-auth/pom.xml @@ -89,6 +89,11 @@ mybatis-plus-boot-starter 3.0.5 --> + + com.daqing.financial + dq-financial-api + 0.0.1-SNAPSHOT + diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java index ed2ad65f..195035db 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/controller/UserLoginController.java @@ -1,5 +1,6 @@ package com.daqing.financial.hrauth.controller; +import com.daqing.financial.hrauth.UserLoginControllerApi; import com.daqing.financial.hrauth.service.UserLoginService; import com.daqing.framework.domain.hrms.request.LoginRequest; import com.daqing.framework.domain.hrms.request.UserLoginRequest; @@ -19,7 +20,7 @@ import javax.validation.Valid; @RestController @RequestMapping("/hrms/auth/userlogin") @Api(tags = {"登录"}) -public class UserLoginController { +public class UserLoginController implements UserLoginControllerApi { @Autowired private UserLoginService userLoginService; @@ -36,7 +37,15 @@ public class UserLoginController { return "Hello"; } + @PostMapping("/verifyMobile") + @ApiOperation(value = "验证手机号及验证码") + public ResponseResult verifyMobile(@RequestBody @Valid UserLoginRequest user){ + UserLoginRequest result = userLoginService.verifyMobile(user); + return ResponseResult.SUCCESS(result); + } + @PostMapping("/getBackPwd") + @ApiOperation(value = "重置密码") public ResponseResult getBackPwd(@RequestBody @Valid UserLoginRequest user){ boolean result = userLoginService.getBackPwd(user); return result ? ResponseResult.SUCCESS() : ResponseResult.FAIL(); diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java index 583a4618..47481c74 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/UserLoginService.java @@ -12,6 +12,7 @@ import com.daqing.framework.model.response.ResponseResult; */ public interface UserLoginService extends IService { Boolean getBackPwd(UserLoginRequest user); + UserLoginRequest verifyMobile(UserLoginRequest user); //登录 ResponseResult login(LoginRequest loginRequest); diff --git a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java index 824f8f49..1d3c0fac 100644 --- a/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java +++ b/dq-financial-hrms-auth/src/main/java/com/daqing/financial/hrauth/service/impl/UserLoginServiceImpl.java @@ -43,10 +43,10 @@ public class UserLoginServiceImpl extends ServiceImpl }*/ /** - * 忘记密码 + * 验证手机号及验证码 */ @Override - public Boolean getBackPwd(UserLoginRequest user){ + public UserLoginRequest verifyMobile(UserLoginRequest user){ //判断重置密码参数是否为空 if(StringUtils.isEmpty(user.getPhoneAccount())){ ExceptionCast.cast(HrmsCode.PHNOE_ACCOUNT_NOT_EMPTY); @@ -54,9 +54,7 @@ public class UserLoginServiceImpl extends ServiceImpl if(StringUtils.isEmpty(user.getVerifyCode())){ ExceptionCast.cast(HrmsCode.VERIFY_CODE_ILLEGAL); } - if(StringUtils.isEmpty(user.getNewPwd())){ - ExceptionCast.cast(HrmsCode.NEW_PASSWORD_NOT_EMPTY); - } + //校验手机账号是否存在 /* int count = this.count(new QueryWrapper() .eq("phone_account", user.getPhoneAccount()));*/ @@ -65,13 +63,38 @@ public class UserLoginServiceImpl extends ServiceImpl if (count == 0) { ExceptionCast.cast(HrmsCode.PHNOE_ACCOUNT_NOT_EXIST); } - //根据手机号查询相关信息 - UserEntity userEntity = baseMapper.selectByPhoneAccount(user.getPhoneAccount()); //判断验证码是否匹配 String verify = "123456"; if(!verify.equals(user.getVerifyCode())){ ExceptionCast.cast(HrmsCode.VERIFY_CODE_ILLEGAL); } + return user; + } + + + /** + * 重置密码 + */ + @Override + public Boolean getBackPwd(UserLoginRequest user){ + //判断重置密码参数是否为空 + if(StringUtils.isEmpty(user.getNewPwd())){ + ExceptionCast.cast(HrmsCode.NEW_PASSWORD_NOT_EMPTY); + } + if(StringUtils.isEmpty(user.getConfirmPwd())){ + ExceptionCast.cast(HrmsCode.CONFIRM_PWD_NOT_EMPTY); + } + if(!user.getConfirmPwd().equals(user.getNewPwd())){ + ExceptionCast.cast(HrmsCode.TWICE_PWD_DIFFERENT); + } + + //根据手机号查询相关信息 + UserEntity userEntity = baseMapper.selectByPhoneAccount(user.getPhoneAccount()); + + //新密码不能与账号相同 + if(user.getNewPwd().equals(userEntity.getAccount())){ + ExceptionCast.cast(HrmsCode.NEW_PASSWORD_DIFFERENT); + } String newMD5 = Md5Util.md5(user.getNewPwd()+userEntity.getId()); //根据手机号码修改密码 diff --git a/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java b/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java index 11e198a3..4561f4be 100644 --- a/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java +++ b/dq-financial-hrms/src/main/java/com/daqing/financial/hrms/controller/DeptController.java @@ -6,6 +6,8 @@ import com.daqing.framework.domain.hrms.DepartmentVO; import com.daqing.framework.domain.hrms.DeptEntity; import com.daqing.framework.domain.hrms.request.DeptAddRequest; import com.daqing.framework.model.response.ResponseResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -21,6 +23,7 @@ import java.util.List; */ @RestController @RequestMapping("hrms/dept") +@Api(tags = {"测试swagger"}) public class DeptController implements DeptControllerApi { @Autowired @@ -34,6 +37,7 @@ public class DeptController implements DeptControllerApi { */ @Override @PostMapping("/save") + @ApiOperation(value = "111") //@RequiresPermissions("hrms:dept:save") public ResponseResult save(@RequestBody DeptAddRequest deptAddRequest) { boolean result = deptService.saveDept(deptAddRequest); diff --git a/dq-framework-common/dq-framework-common.iml b/dq-framework-common/dq-framework-common.iml new file mode 100644 index 00000000..f683c485 --- /dev/null +++ b/dq-framework-common/dq-framework-common.iml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/dq-framework-common/pom.xml b/dq-framework-common/pom.xml index 2207e522..893d737a 100644 --- a/dq-framework-common/pom.xml +++ b/dq-framework-common/pom.xml @@ -115,23 +115,40 @@ spring-cloud-starter-alibaba-nacos-config + com.auth0 java-jwt 3.3.0 + com.alibaba fastjson 1.2.70 + org.springframework.boot spring-boot-starter-data-redis 2.1.8.RELEASE + + + + com.github.suxingli + aliyuncs + 1.0.1 + + + + com.aliyun + aliyun-java-sdk-dysmsapi + 1.1.0 + + diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/BasePage.java b/dq-framework-common/src/main/java/com/daqing/framework/util/BasePage.java new file mode 100644 index 00000000..ad2d5da3 --- /dev/null +++ b/dq-framework-common/src/main/java/com/daqing/framework/util/BasePage.java @@ -0,0 +1,9 @@ +package com.daqing.framework.util; + +import lombok.Data; +//分页工具类 +@Data +public class BasePage { + private int page = 0; + private int size = 10; +} diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/RandomUtil.java b/dq-framework-common/src/main/java/com/daqing/framework/util/RandomUtil.java new file mode 100644 index 00000000..39277703 --- /dev/null +++ b/dq-framework-common/src/main/java/com/daqing/framework/util/RandomUtil.java @@ -0,0 +1,15 @@ +package com.daqing.framework.util; + +import java.util.Random; + +public class RandomUtil { + public static String getRandomNum(int num) { + String str = "0123456789"; + StringBuilder sb = new StringBuilder(4); + for (int i = 0; i < num; i++) { + char ch = str.charAt(new Random().nextInt(str.length())); + sb.append(ch); + } + return sb.toString(); + } +} diff --git a/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java b/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java new file mode 100644 index 00000000..34587a05 --- /dev/null +++ b/dq-framework-common/src/main/java/com/daqing/framework/util/SendSMS.java @@ -0,0 +1,80 @@ +package com.daqing.framework.util; + +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class SendSMS { + + + public static void main(String[] args){ + String mobile="13888888888";//需要接受短信验证码的手机号 + String sendTemplate="SMS_134188888";//短信模板ID,需要去阿里云平台申请,审核通过后方能使用,通常是以"SMS_"开头字符串 + String code = (int)((Math.random() * 9 + 1) * 100000)+ "";//要发送给用户的短信验证码,行业通常使用六位纯数字 + + String result= sendCode(mobile,sendTemplate,code); + if(result!=null&&"OK".equals(result.toUpperCase())){ + System.out.println("短信发送成功"); + }else{ + System.out.println("短信发送失败"); + } + + } + /** + * 通过阿里云平台发送短信,如果发送成功,返回"OK" ;否则返回的是错误信息 + * @param mobile 要接收该短信的用户手机号 + * @param sendTemplate 短信模板id,此处将其封装为变量,是为了由该方法的调用者决定自己来发送哪种类型的短信验证码,比如注册,重置密码类的 + * @param code 您将发送到用户手机的短信验证码 + */ + public static String sendCode(String mobile,String sendTemplate,String code){ + //请求失败这里会抛ClientException异常 + String result=""; + try { + //设置超时时间-可自行调整 + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + //初始化ascClient需要的几个参数 + final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改) + final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改) + //替换成你的AK + final String accessKeyId = "LTAI3IJDEVkXgY0E";//你的accessKeyId,参考本文档步骤2 + final String accessKeySecret = "kmnOeksdTEauInvea9Hf6dqssDdvho";//你的accessKeySecret,参考本文档步骤2 + //初始化ascClient,暂时不支持多region(请勿修改) + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, + accessKeySecret); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); + IAcsClient acsClient = new DefaultAcsClient(profile); + //组装请求对象 + SendSmsRequest request = new SendSmsRequest(); + //使用post提交 + request.setMethod(MethodType.POST); + //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000” + request.setPhoneNumbers(mobile); + //必填:短信签名-可在短信控制台中找到 + request.setSignName("");//注意要与你在短信控制台中的签名一致 + //必填:短信模板-可在短信控制台中找到 + request.setTemplateCode(sendTemplate); + //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败 +// request.setTemplateParam("{\"name\":\"Tom\", \"code\":\"123\"}"); + request.setTemplateParam("{\"code\":\""+code+"\"}"); + //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) + //request.setSmsUpExtendCode("90997"); + //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 +// request.setOutId("yourOutId"); + + SendSmsResponse response = acsClient.getAcsResponse(request); + result=response.getCode(); + } catch (Exception e) { + result=e.getMessage(); + } + return result; + } + +} \ No newline at end of file diff --git a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java index 13b39d2c..c6428064 100644 --- a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java +++ b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/request/UserLoginRequest.java @@ -30,4 +30,8 @@ public class UserLoginRequest implements Serializable { */ @Pattern(regexp = "^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{6,20}$",message = "密码格式不正确!") private String newPwd; + /** + * 确认密码 + */ + private String confirmPwd; } diff --git a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java index 52fcc512..cbfea710 100644 --- a/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java +++ b/dq-framework-model/src/main/java/com/daqing/framework/domain/hrms/response/HrmsCode.java @@ -27,6 +27,9 @@ public enum HrmsCode implements ResultCode { NEW_PASSWORD_ILLEGAL(false,33004,"新密码格式不正确!"), VERIFY_CODE_ILLEGAL(false,33005,"验证码不匹配!"), PHNOE_ACCOUNT_NOT_EXIST(false,33006,"手机号码不存在!"), + CONFIRM_PWD_NOT_EMPTY(false,33007,"确认密码不能为空!"), + TWICE_PWD_DIFFERENT(false,33008,"两次输入密码不一致!"), + NEW_PASSWORD_DIFFERENT(false,33008,"输入的新密码不能与账号相同!"), EMP_POSITION_EXSIT(false, 22006, "该职位下已关联员工!"); diff --git a/dq-govern-gateway/pom.xml b/dq-govern-gateway/pom.xml index f34cda2e..1cbbb367 100644 --- a/dq-govern-gateway/pom.xml +++ b/dq-govern-gateway/pom.xml @@ -20,11 +20,6 @@ - org.springframework.cloud @@ -53,27 +48,11 @@ 1.18.12 - - com.auth0 - java-jwt - 3.3.0 - - org.springframework.boot spring-boot-starter-data-redis - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.vintage - junit-vintage-engine - - - + diff --git a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java index 27639e65..53ad45d0 100644 --- a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java +++ b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/config/ApiGlobalFilter.java @@ -1,7 +1,6 @@ package com.daqing.financial.gateway.config; import com.alibaba.fastjson.JSONObject; -import com.daqing.financial.gateway.util.JwtUtil; import com.daqing.financial.gateway.util.RedisUtil; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -86,7 +85,7 @@ public class ApiGlobalFilter implements GlobalFilter, Ordered { */ private Long verifyJWT(String token){ String id = RedisUtil.get("dq:token:"+token); - return JwtUtil.verifyToken(token); + return Long.parseLong(id); } @Override diff --git a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java index af0d0001..a59c22dd 100644 --- a/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java +++ b/dq-govern-gateway/src/main/java/com/daqing/financial/gateway/util/JwtUtil.java @@ -1,71 +1,71 @@ -package com.daqing.financial.gateway.util; - - -import com.auth0.jwt.JWT; -import com.auth0.jwt.algorithms.Algorithm; -import com.daqing.financial.gateway.SpringContextHolder; - -import java.util.Date; -import java.util.Set; - -/** - * @author zcw - * @version 1.0 - * @date 2019/11/23 11:06 - * @description jwt工具类 - */ -public class JwtUtil { - - private final static Algorithm algorithm = SpringContextHolder.getBean("algorithm", Algorithm.class); - - //private final static OdcProperties properties = SpringContextHolder.getBean("odcProperties", OdcProperties.class); - - /** - * 创建token - * - * @param userId; - * @param timeout; 单位是秒 - */ - public static String createJwtToken(Long userId, long timeout) { - return JWT.create() - .withClaim("member", userId) - .withExpiresAt(new Date(System.currentTimeMillis() + timeout * 1000)) - .sign(algorithm); - } - - /** - * token正确且有效,则返回userId - */ - public static Long verifyToken(String token) { - try { - String noBearerToken = token.replaceFirst("Bearer ", ""); - Long userId = JWT.require(algorithm) - .build() - .verify(noBearerToken) - .getClaim("member") - .asLong(); - if (RedisUtil.get(getRedisKey(userId, noBearerToken)) != null) { - return userId; - } - } catch (Exception e) { - e.printStackTrace(); - return null; - } - return null; - } - - public static String getRedisKey(Long userId, String token) { - return String.format("dq:token:%d:%s", userId, token); - } - - public static void putTokenToRedis(Long userId, String token, long times) { - RedisUtil.setEx(getRedisKey(userId, token), "nothing", times); - } - - public static void removeTokenByUserId(Long userId) { - Set tokenSet = RedisUtil.keys(getRedisKey(userId, "*")); - for (String key : tokenSet) { - RedisUtil.del(key); - } - } -} +//package com.daqing.financial.gateway.util; +// +// +//import com.auth0.jwt.JWT; +//import com.auth0.jwt.algorithms.Algorithm; +//import com.daqing.financial.gateway.SpringContextHolder; +// +//import java.util.Date; +//import java.util.Set; +// +///** +// * @author zcw +// * @version 1.0 +// * @date 2019/11/23 11:06 +// * @description jwt工具类 +// */ +//public class JwtUtil { +// +// private final static Algorithm algorithm = SpringContextHolder.getBean("algorithm", Algorithm.class); +// +// //private final static OdcProperties properties = SpringContextHolder.getBean("odcProperties", OdcProperties.class); +// +// /** +// * 创建token +// * +// * @param userId; +// * @param timeout; 单位是秒 +// */ +// public static String createJwtToken(Long userId, long timeout) { +// return JWT.create() +// .withClaim("member", userId) +// .withExpiresAt(new Date(System.currentTimeMillis() + timeout * 1000)) +// .sign(algorithm); +// } +// +// /** +// * token正确且有效,则返回userId +// */ +// public static Long verifyToken(String token) { +// try { +// String noBearerToken = token.replaceFirst("Bearer ", ""); +// Long userId = JWT.require(algorithm) +// .build() +// .verify(noBearerToken) +// .getClaim("member") +// .asLong(); +// if (RedisUtil.get(getRedisKey(userId, noBearerToken)) != null) { +// return userId; +// } +// } catch (Exception e) { +// e.printStackTrace(); +// return null; +// } +// return null; +// } +// +// public static String getRedisKey(Long userId, String token) { +// return String.format("dq:token:%d:%s", userId, token); +// } +// +// public static void putTokenToRedis(Long userId, String token, long times) { +// RedisUtil.setEx(getRedisKey(userId, token), "nothing", times); +// } +// +// public static void removeTokenByUserId(Long userId) { +// Set tokenSet = RedisUtil.keys(getRedisKey(userId, "*")); +// for (String key : tokenSet) { +// RedisUtil.del(key); +// } +// } +//} diff --git a/dq-govern-gateway/src/main/resources/jwt.properties b/dq-govern-gateway/src/main/resources/jwt.properties index d8152474..9212031c 100644 --- a/dq-govern-gateway/src/main/resources/jwt.properties +++ b/dq-govern-gateway/src/main/resources/jwt.properties @@ -1 +1 @@ -jwt.ignoreUrlList=/apiHrmsAuth/hrms/auth/userlogin/getBackPwd,/apiHrmsAuth/hrms/auth/userlogin/login +jwt.ignoreUrlList=/apiHrmsAuth/hrms/auth/userlogin/getBackPwd,/apiHrmsAuth/hrms/auth/userlogin/login,/apiHrmsAuth/hrms/auth/userlogin/verifyMobile \ No newline at end of file