fix: return structured JSON on auth failure for login error message
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 21s
CI/CD Deploy (Admin) / 构建后端镜像并部署 (push) Successful in 21s
This commit is contained in:
@@ -1,6 +1,10 @@
|
|||||||
package com.freedom.admin.config;
|
package com.freedom.admin.config;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.freedom.admin.common.Result;
|
||||||
import org.springframework.security.authentication.BadCredentialsException;
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
|
import org.springframework.security.authentication.DisabledException;
|
||||||
|
import org.springframework.security.authentication.LockedException;
|
||||||
import org.springframework.security.core.AuthenticationException;
|
import org.springframework.security.core.AuthenticationException;
|
||||||
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@@ -21,15 +25,23 @@ public class MyAuthenticationFailureHandler implements AuthenticationFailureHand
|
|||||||
public void onAuthenticationFailure(HttpServletRequest request,
|
public void onAuthenticationFailure(HttpServletRequest request,
|
||||||
HttpServletResponse response,
|
HttpServletResponse response,
|
||||||
AuthenticationException e) throws IOException {
|
AuthenticationException e) throws IOException {
|
||||||
//修改编码格式
|
// 修改编码格式
|
||||||
request.setCharacterEncoding("utf-8");
|
response.setCharacterEncoding("utf-8");
|
||||||
response.setContentType("application/json");
|
response.setContentType("application/json;charset=utf-8");
|
||||||
|
|
||||||
if (e instanceof BadCredentialsException){
|
String message;
|
||||||
response.getWriter().write("用户名或密码错误");
|
if (e instanceof BadCredentialsException) {
|
||||||
}else {
|
message = "用户名或密码错误";
|
||||||
response.getWriter().write("登录失败!");
|
} else if (e instanceof LockedException) {
|
||||||
|
message = "账号已被锁定,请联系管理员";
|
||||||
|
} else if (e instanceof DisabledException) {
|
||||||
|
message = "账号已被禁用,请联系管理员";
|
||||||
|
} else {
|
||||||
|
message = "登录失败,请稍后重试";
|
||||||
}
|
}
|
||||||
|
// 返回结构化 JSON(HTTP 200 + 业务码),前端依据 message 提示用户;
|
||||||
|
// code 415 为前端模板预留的凭据类错误码
|
||||||
|
Result result = Result.error().code(415).message(message);
|
||||||
|
response.getWriter().write(JSON.toJSONString(result));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user