diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/nopaddword/LoginType.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/nopaddword/LoginType.java
new file mode 100644
index 00000000..6124b112
--- /dev/null
+++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/nopaddword/LoginType.java
@@ -0,0 +1,30 @@
+package com.zdxt.auth.framework.shiro.nopaddword;
+
+/**
+ * @Author: kylin
+ * @Date: 2024/4/28 10:51 上午
+ * @Version: 1.0
+ * @Desc: 登录类型枚举类
+ */
+public enum LoginType {
+ /**
+ * 密码登录
+ */
+ PASSWORD("password"),
+ /**
+ * 免密码登录
+ */
+ NOPASSWD("nopasswd");
+
+ private String desc;
+
+ LoginType(String desc)
+ {
+ this.desc = desc;
+ }
+
+ public String getDesc()
+ {
+ return desc;
+ }
+}
diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/nopaddword/UserToken.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/nopaddword/UserToken.java
new file mode 100644
index 00000000..540b9292
--- /dev/null
+++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/nopaddword/UserToken.java
@@ -0,0 +1,48 @@
+package com.zdxt.auth.framework.shiro.nopaddword;
+
+import org.apache.shiro.authc.UsernamePasswordToken;
+
+/**
+ * @Author: kylin
+ * @Date: 2024/4/28 10:52 上午
+ * @Version: 1.0
+ * @Desc: 自定义登录Token
+ */
+public class UserToken extends UsernamePasswordToken
+{
+ private static final long serialVersionUID = 1L;
+
+ private LoginType type;
+
+ public UserToken()
+ {
+ }
+
+ public UserToken(String username, String password, LoginType type, boolean rememberMe)
+ {
+ super(username, password, rememberMe);
+ this.type = type;
+ }
+
+ public UserToken(String username, LoginType type)
+ {
+ super(username, "", false, null);
+ this.type = type;
+ }
+
+ public UserToken(String username, String password, LoginType type)
+ {
+ super(username, password, false, null);
+ this.type = type;
+ }
+
+ public LoginType getType()
+ {
+ return type;
+ }
+
+ public void setType(LoginType type)
+ {
+ this.type = type;
+ }
+}
\ No newline at end of file
diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/realm/UserRealm.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/realm/UserRealm.java
index f956298c..a4d33736 100644
--- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/realm/UserRealm.java
+++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/realm/UserRealm.java
@@ -4,6 +4,8 @@ import java.util.HashSet;
import java.util.Set;
import cn.hutool.core.util.StrUtil;
+import com.zdxt.auth.framework.shiro.nopaddword.LoginType;
+import com.zdxt.auth.framework.shiro.nopaddword.UserToken;
import com.zdxt.auth.framework.shiro.service.LoginService;
import com.zdxt.common.util.RedisCache;
import com.zdxt.domain.auth.User;
@@ -92,7 +94,9 @@ public class UserRealm extends AuthorizingRealm implements ZdxtUserRealm
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException
{
- UsernamePasswordToken upToken = (UsernamePasswordToken) token;
+// UsernamePasswordToken upToken = (UsernamePasswordToken) token;
+ UserToken upToken = (UserToken) token;
+ LoginType type = upToken.getType();
String username = upToken.getUsername();
String password = "";
if (upToken.getPassword() != null)
@@ -103,7 +107,15 @@ public class UserRealm extends AuthorizingRealm implements ZdxtUserRealm
User user = null;
try
{
- user = loginService.login(username, password);
+// user = loginService.login(username, password);
+ if (LoginType.PASSWORD.equals(type))
+ {
+ user = loginService.login(username, password);
+ }
+ else if (LoginType.NOPASSWD.equals(type))
+ {
+ user = loginService.login(username);
+ }
}
catch (CaptchaException e)
{
diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/service/LoginService.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/service/LoginService.java
index c86a8ca2..638d64c8 100644
--- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/service/LoginService.java
+++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/framework/shiro/service/LoginService.java
@@ -106,6 +106,55 @@ public class LoginService
return user;
}
+ public User login(String username)
+ {
+ // 验证码校验
+ if (!StringUtils.isEmpty(ServletUtils.getRequest().getAttribute(ShiroConstants.CURRENT_CAPTCHA)))
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
+ throw new CaptchaException();
+ }
+ // 用户名或密码为空 错误
+ if (StringUtils.isEmpty(username))
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
+ throw new UserNotExistsException();
+ }
+
+ // 用户名不在指定范围内 错误
+ if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+ || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+ throw new UserPasswordNotMatchException();
+ }
+
+ // 查询用户信息
+ User user = userService.selectUserByLoginName(username);
+
+ if (user == null)
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.not.exists")));
+ throw new UserNotExistsException();
+ }
+
+ if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.delete")));
+ throw new UserDeleteException();
+ }
+
+ if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
+ {
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.blocked", user.getRemark())));
+ throw new UserBlockedException();
+ }
+
+ AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+ recordLoginInfo(user);
+ return user;
+ }
+
private boolean maybeEmail(String username)
{
if (!username.matches(UserConstants.EMAIL_PATTERN))
diff --git a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginController.java b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginController.java
index c0e0334a..d1e7f0fc 100644
--- a/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginController.java
+++ b/lib/EmergencyService/zdxtEmergencyAuthService/src/main/java/com/zdxt/auth/project/system/user/controller/LoginController.java
@@ -4,6 +4,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zdxt.auth.dto.UserBean;
+import com.zdxt.auth.framework.shiro.nopaddword.LoginType;
+import com.zdxt.auth.framework.shiro.nopaddword.UserToken;
import com.zdxt.auth.framework.shiro.service.PasswordService;
import com.zdxt.auth.project.system.user.service.ITcUserCidService;
import com.zdxt.auth.project.system.user.service.IUserService;
@@ -87,7 +89,8 @@ public class LoginController extends BaseController
// username = username.toUpperCase();
//解密
password = AesHelper.desEncrypt(password);
- UsernamePasswordToken token = new UsernamePasswordToken(username, password, false);
+// UsernamePasswordToken token = new UsernamePasswordToken(username, password, false);
+ UserToken token = new UserToken(username, password, LoginType.PASSWORD);
Subject subject = SecurityUtils.getSubject();
try {
if ("1".equals(type)) { //APP
@@ -167,7 +170,8 @@ public class LoginController extends BaseController
public AjaxResult appLogin(String username, String password, Boolean rememberMe, String type, String clientid) {
// username = username.toUpperCase();
//解密
- UsernamePasswordToken token = new UsernamePasswordToken(username, password, false);
+// UsernamePasswordToken token = new UsernamePasswordToken(username, password, false);
+ UserToken token = new UserToken(username, password, LoginType.PASSWORD);
Subject subject = SecurityUtils.getSubject();
try {
//PC
@@ -190,7 +194,8 @@ public class LoginController extends BaseController
password = "123456";
//解密
// password = AesHelper.desEncrypt(password);
- UsernamePasswordToken token = new UsernamePasswordToken(username, password, false);
+// UsernamePasswordToken token = new UsernamePasswordToken(username, password, false);
+ UserToken token = new UserToken(username, password, LoginType.PASSWORD);
Subject subject = SecurityUtils.getSubject();
try {
subject.login(token);
diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/pom.xml b/lib/EmergencyService/zdxtLawEnforcementCodeService/pom.xml
index c90753ce..5d50ab76 100644
--- a/lib/EmergencyService/zdxtLawEnforcementCodeService/pom.xml
+++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/pom.xml
@@ -42,6 +42,12 @@
wsdl4j
1.6.3
+
+ EmergencyService
+ zdxtEmergencyAuthService
+ 1.0
+ compile
+
\ No newline at end of file
diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java
index e281dd71..8f59ce22 100644
--- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java
+++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/controller/ThirdLoginController.java
@@ -1,9 +1,10 @@
package com.zdxt.code.controller;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zdxt.auth.dto.UserBean;
import com.zdxt.auth.feign.UserApi;
+import com.zdxt.auth.framework.shiro.nopaddword.LoginType;
+import com.zdxt.auth.framework.shiro.nopaddword.UserToken;
import com.zdxt.code.domain.SiqLogin;
import com.zdxt.code.service.ThirdLoginService;
import com.zdxt.code.utils.HttpUtil;
@@ -54,20 +55,6 @@ public class ThirdLoginController {
@PostMapping("/siqLogin")
@ResponseBody
public ZDResponse siqLogin(@RequestBody SiqLogin siqLogin){
-// try {
-// //查询登录用户
-// UserBean user = userApi.getUserByUserLoginName("3ab349ca");
-// //本系统令牌
-// UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), user.getPassword(), false);
-// Subject subject = SecurityUtils.getSubject();
-// subject.login(sysToken);
-// return ZDResponse.success("登录成功",user);
-// } catch (Exception e) {
-// e.printStackTrace();
-// }
-
-
-
//敏感信息加密
String userIdCode = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, siqLogin.getUserId());
String userNameCode = IdCardCryptoUtil.symmetricEncryptIdCard(secretKey, siqLogin.getUserName());
diff --git a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java
index dacc2e6d..c964c946 100644
--- a/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java
+++ b/lib/EmergencyService/zdxtLawEnforcementCodeService/src/main/java/com/zdxt/code/service/impl/ThirdLoginServiceImpl.java
@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.zdxt.auth.dto.UserBean;
import com.zdxt.auth.feign.UserApi;
+import com.zdxt.auth.framework.shiro.nopaddword.LoginType;
+import com.zdxt.auth.framework.shiro.nopaddword.UserToken;
import com.zdxt.code.domain.EnterpriseInformation;
import com.zdxt.code.service.IEnforcementRegistrationService;
import com.zdxt.code.service.IEnterpriseInformationService;
@@ -54,7 +56,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
log.info("用户名:{}",tmpObj.getString("account"));
UserBean user = userApi.getUserByUserLoginName(tmpObj.getString("account"));
//本系统令牌
- UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), user.getPassword(), false);
+// UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), user.getPassword(), false);
+ UserToken sysToken = new UserToken(user.getLoginName(), LoginType.NOPASSWD);
Subject subject = SecurityUtils.getSubject();
subject.login(sysToken);
return ZDResponse.success("登录成功",user);
@@ -131,7 +134,8 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
//查询登录用户
UserBean user = userApi.getUserByUserLoginName(userName);
//本系统令牌
- UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), "123456", false);
+// UsernamePasswordToken sysToken = new UsernamePasswordToken(user.getLoginName(), "123456", false);
+ UserToken sysToken = new UserToken(user.getLoginName(), "123456", LoginType.PASSWORD);
Subject subject = SecurityUtils.getSubject();
subject.login(sysToken);
}