Quellcode durchsuchen

自定义oauth2返回异常信息

RuoYi vor 5 Jahren
Ursprung
Commit
6ee4efa284

+ 20 - 0
ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthException.java

@@ -0,0 +1,20 @@
1
+package com.ruoyi.auth.exception;
2
+
3
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
4
+import org.springframework.security.oauth2.common.exceptions.OAuth2Exception;
5
+
6
+/**
7
+ * oauth2自定义异常
8
+ *
9
+ * @author ruoyi
10
+ **/
11
+@JsonSerialize(using = CustomOauthExceptionSerializer.class)
12
+public class CustomOauthException extends OAuth2Exception
13
+{
14
+    private static final long serialVersionUID = 1L;
15
+
16
+    public CustomOauthException(String msg)
17
+    {
18
+        super(msg);
19
+    }
20
+}

+ 48 - 0
ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomOauthExceptionSerializer.java

@@ -0,0 +1,48 @@
1
+package com.ruoyi.auth.exception;
2
+
3
+import java.io.IOException;
4
+import org.slf4j.Logger;
5
+import org.slf4j.LoggerFactory;
6
+import com.fasterxml.jackson.core.JsonGenerator;
7
+import com.fasterxml.jackson.databind.SerializerProvider;
8
+import com.fasterxml.jackson.databind.ser.std.StdSerializer;
9
+import com.ruoyi.common.core.constant.HttpStatus;
10
+import com.ruoyi.common.core.utils.StringUtils;
11
+import com.ruoyi.common.core.web.domain.AjaxResult;
12
+
13
+/**
14
+ * 自定义异常返回
15
+ *
16
+ * @author ruoyi
17
+ **/
18
+public class CustomOauthExceptionSerializer extends StdSerializer<CustomOauthException>
19
+{
20
+    private static final long serialVersionUID = 1L;
21
+
22
+    private static final Logger log = LoggerFactory.getLogger(CustomOauthExceptionSerializer.class);
23
+
24
+    public static final String BAD_CREDENTIALS = "Bad credentials";
25
+
26
+    public CustomOauthExceptionSerializer()
27
+    {
28
+        super(CustomOauthException.class);
29
+    }
30
+
31
+    @Override
32
+    public void serialize(CustomOauthException e, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
33
+            throws IOException
34
+    {
35
+        jsonGenerator.writeStartObject();
36
+        jsonGenerator.writeNumberField(AjaxResult.CODE_TAG, HttpStatus.ERROR);
37
+        if (StringUtils.equals(e.getMessage(), BAD_CREDENTIALS))
38
+        {
39
+            jsonGenerator.writeStringField(AjaxResult.MSG_TAG, "用户名或密码错误");
40
+        }
41
+        else
42
+        {
43
+            log.warn("oauth2 认证异常 {} ", e);
44
+            jsonGenerator.writeStringField(AjaxResult.MSG_TAG, e.getMessage());
45
+        }
46
+        jsonGenerator.writeEndObject();
47
+    }
48
+}

+ 2 - 3
ruoyi-auth/src/main/java/com/ruoyi/auth/exception/CustomWebResponseExceptionTranslator.java

@@ -1,6 +1,6 @@
1 1
 package com.ruoyi.auth.exception;
2 2
 
3
-import javax.servlet.http.HttpServletResponse;
3
+import org.springframework.http.HttpStatus;
4 4
 import org.springframework.http.ResponseEntity;
5 5
 import org.springframework.security.oauth2.common.exceptions.OAuth2Exception;
6 6
 import org.springframework.security.oauth2.provider.error.WebResponseExceptionTranslator;
@@ -15,7 +15,6 @@ public class CustomWebResponseExceptionTranslator implements WebResponseExceptio
15 15
     @Override
16 16
     public ResponseEntity<OAuth2Exception> translate(Exception e)
17 17
     {
18
-        OAuth2Exception oAuth2Exception = (OAuth2Exception) e;
19
-        return ResponseEntity.status(HttpServletResponse.SC_UNAUTHORIZED).body(oAuth2Exception);
18
+        return ResponseEntity.status(HttpStatus.OK).body(new CustomOauthException(e.getMessage()));
20 19
     }
21 20
 }

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java

@@ -102,6 +102,10 @@ public class SysUserController extends BaseController
102 102
     public R<UserInfo> info(@PathVariable("username") String username)
103 103
     {
104 104
         SysUser sysUser = userService.selectUserByUserName(username);
105
+        if (StringUtils.isNull(sysUser))
106
+        {
107
+            return R.failed("用户名或密码错误");
108
+        }
105 109
         // 角色集合
106 110
         Set<String> roles = permissionService.getRolePermission(sysUser.getUserId());
107 111
         // 权限集合