From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改

---
 src/main/java/com/genersoft/iot/vmp/conf/security/LoginFailureHandler.java |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/LoginFailureHandler.java b/src/main/java/com/genersoft/iot/vmp/conf/security/LoginFailureHandler.java
new file mode 100644
index 0000000..9bbf2e7
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/LoginFailureHandler.java
@@ -0,0 +1,65 @@
+package com.genersoft.iot.vmp.conf.security;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.*;
+import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.web.authentication.AuthenticationFailureHandler;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+public class LoginFailureHandler implements AuthenticationFailureHandler {
+
+    private final static Logger logger = LoggerFactory.getLogger(LoginFailureHandler.class);
+
+    @Autowired
+    private ObjectMapper objectMapper;
+
+    @Override
+    public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {
+
+        String username = request.getParameter("username");
+        if (e instanceof AccountExpiredException) {
+            // 账号过期
+            logger.info("[登录失败] - 用户[{}]账号过期", username);
+
+        } else if (e instanceof BadCredentialsException) {
+            // 密码错误
+            logger.info("[登录失败] - 用户[{}]密码/SIP服务器ID 错误", username);
+
+        } else if (e instanceof CredentialsExpiredException) {
+            // 密码过期
+            logger.info("[登录失败] - 用户[{}]密码过期", username);
+
+        } else if (e instanceof DisabledException) {
+            // 用户被禁用
+            logger.info("[登录失败] - 用户[{}]被禁用", username);
+
+        } else if (e instanceof LockedException) {
+            // 用户被锁定
+            logger.info("[登录失败] - 用户[{}]被锁定", username);
+
+        } else if (e instanceof InternalAuthenticationServiceException) {
+            // 内部错误
+            logger.error(String.format("[登录失败] - [%s]内部错误", username), e);
+
+        } else {
+            // 其他错误
+            logger.error(String.format("[登录失败] - [%s]其他错误", username), e);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("code","0");
+        map.put("msg","登录失败");
+        response.setContentType("application/json;charset=UTF-8");
+        response.getWriter().write(objectMapper.writeValueAsString(map));
+    }
+}

--
Gitblit v1.9.3