1
0
Просмотр исходного кода

fix: 跳转登录解析token的问题

Arsekl 5 лет назад
Родитель
Сommit
d44a403f63

+ 4 - 2
src/main/java/com/nju/edu/eval/aspect/auth/AuthAspect.java

@@ -4,6 +4,7 @@ import com.auth0.jwt.exceptions.JWTVerificationException;
 import com.auth0.jwt.interfaces.Claim;
 import com.nju.edu.eval.data.entity.User;
 import com.nju.edu.eval.exception.MyServiceException;
+import com.nju.edu.eval.model.vo.user.PortalUserVO;
 import com.nju.edu.eval.service.UserService;
 import com.nju.edu.eval.service.convertor.UserConvertor;
 import com.nju.edu.eval.model.vo.user.UpdateUserVO;
@@ -19,6 +20,7 @@ import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.Optional;
@@ -41,7 +43,8 @@ public class AuthAspect {
     private User getUserByToken(String token) throws JWTVerificationException {
         try {
             Claim claim = JwtUtil.parseJwt(token);
-            return claim.as(User.class);
+            PortalUserVO userVO = claim.as(PortalUserVO.class);
+            return new User(userVO.getId(), userVO.getRole(), userVO.getName(), userVO.getEmail(), userVO.getPhone(), new ArrayList<>(), null);
         } catch (MyServiceException e) {
             throw new  MyServiceException(e.getCode(), e.getMessage());
         }
@@ -52,7 +55,6 @@ public class AuthAspect {
         HttpServletRequest httpServletRequest = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
         String token = Optional.ofNullable(httpServletRequest.getHeader("Authorization")).
                 orElseThrow(() -> new MyServiceException("A0223", "用户未获得第三方登录授权"));
-
         User user = getUserByToken(token);
         // 创建或者更新用户
         if (userService.existsById(user.getId())) {

+ 31 - 0
src/main/java/com/nju/edu/eval/model/vo/user/PortalUserVO.java

@@ -0,0 +1,31 @@
+package com.nju.edu.eval.model.vo.user;
+
+import com.nju.edu.eval.publicdatas.enums.UserRole;
+import lombok.Data;
+import lombok.ToString;
+
+import java.time.OffsetDateTime;
+
+@Data
+@ToString
+public class PortalUserVO {
+    private Integer id;
+
+    private String phone;
+
+    private String username;
+
+    private String name;
+
+    private String email;
+
+    private String photo;
+
+    private UserRole role = UserRole.STUDENT;
+
+    private String signature = "无";
+
+    private String createdTime;
+
+    private Boolean valid = true;
+}

+ 1 - 1
src/main/resources/application-prod.yml

@@ -29,7 +29,7 @@ spring:
 
 jwt:
   header: Authorization
-  secret: SEEC-1919810-OIDC-114514
+  secret: UenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRW
 
 seec-bok-client:
   host: http://bok.seec.seecoder.cn

+ 1 - 1
src/main/resources/application-test.yml

@@ -32,7 +32,7 @@ spring:
 
 jwt:
   header: Authorization
-  secret: SEEC-1919810-OIDC-114514
+  secret: UenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRWUenM4KGb6DskRW
 
 seec-bok-client:
   host: http://bok.seec.seecoder.cn