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