diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthException.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthException.java new file mode 100644 index 0000000..7ead34a --- /dev/null +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthException.java @@ -0,0 +1,20 @@ +package com.ruoyi.auth.exception; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import org.springframework.security.oauth2.common.exceptions.OAuth2Exception; + +/** + * oauth2自定义异常 + * + * @author ruoyi + **/ +@JsonSerialize(using = CustomOauthExceptionSerializer.class) +public class CustomOauthException extends OAuth2Exception +{ + private static final long serialVersionUID = 1L; + + public CustomOauthException(String msg) + { + super(msg); + } +} \ No newline at end of file diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthExceptionSerializer.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthExceptionSerializer.java new file mode 100644 index 0000000..79d4472 --- /dev/null +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthExceptionSerializer.java @@ -0,0 +1,48 @@ +package com.ruoyi.auth.exception; + +import java.io.IOException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import com.ruoyi.common.core.constant.HttpStatus; +import com.ruoyi.common.core.utils.StringUtils; +import com.ruoyi.common.core.web.domain.AjaxResult; + +/** + * 自定义异常返回 + * + * @author ruoyi + **/ +public class CustomOauthExceptionSerializer extends StdSerializer +{ + private static final long serialVersionUID = 1L; + + private static final Logger log = LoggerFactory.getLogger(CustomOauthExceptionSerializer.class); + + public static final String BAD_CREDENTIALS = "Bad credentials"; + + public CustomOauthExceptionSerializer() + { + super(CustomOauthException.class); + } + + @Override + public void serialize(CustomOauthException e, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) + throws IOException + { + jsonGenerator.writeStartObject(); + jsonGenerator.writeNumberField(AjaxResult.CODE_TAG, HttpStatus.ERROR); + if (StringUtils.equals(e.getMessage(), BAD_CREDENTIALS)) + { + jsonGenerator.writeStringField(AjaxResult.MSG_TAG, "用户名或密码错误"); + } + else + { + log.warn("oauth2 认证异常 {} ", e); + jsonGenerator.writeStringField(AjaxResult.MSG_TAG, e.getMessage()); + } + jsonGenerator.writeEndObject(); + } +} \ No newline at end of file diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomWebResponseExceptionTranslator.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomWebResponseExceptionTranslator.java index 7291cef..9b56c08 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomWebResponseExceptionTranslator.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomWebResponseExceptionTranslator.java @@ -1,6 +1,6 @@ package com.ruoyi.auth.exception; -import javax.servlet.http.HttpServletResponse; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.oauth2.common.exceptions.OAuth2Exception; import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator; @@ -15,7 +15,6 @@ public class CustomWebResponseExceptionTranslator implements WebResponseExceptio @Override public ResponseEntity translate(Exception e) { - OAuth2Exception oAuth2Exception = (OAuth2Exception) e; - return ResponseEntity.status(HttpServletResponse.SC_UNAUTHORIZED).body(oAuth2Exception); + return ResponseEntity.status(HttpStatus.OK).body(new CustomOauthException(e.getMessage())); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 6cdfecf..3f7b72c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -102,6 +102,10 @@ public class SysUserController extends BaseController public R info(@PathVariable("username") String username) { SysUser sysUser = userService.selectUserByUserName(username); + if (StringUtils.isNull(sysUser)) + { + return R.failed("用户名或密码错误"); + } // 角色集合 Set roles = permissionService.getRolePermission(sysUser.getUserId()); // 权限集合